Thuộc tính nextSibling của XML DOM
Định nghĩa và cách sử dụng
nextSibling
Thuộc tính này trả về nút anh em cùng cấp tiếp theo của phần tử được chọn (nút tiếp theo trong cùng cấp trong cây).
Nếu không tồn tại nút như vậy, thuộc tính này sẽ trả về null.
Ngữ pháp
elementNode.nextSibling
Lưu ý:Firefox và hầu hết các trình duyệt khác sẽ coi khoảng trống hoặc dòng trống là nút văn bản, trong khi Internet Explorer không. Do đó, trong ví dụ sau, chúng ta sử dụng một hàm để kiểm tra loại nút của nút anh em tiếp theo.
Node của phần tử có nodeType là 1, vì vậy nếu nút anh em tiếp theo không phải là nút phần tử, nó sẽ di chuyển đến nút tiếp theo và kiểm tra nút đó có phải là nút phần tử hay không. Điều này sẽ tiếp tục cho đến khi tìm thấy nút anh em cùng cấp tiếp theo (phải là nút phần tử). Do đó, kết quả sẽ là chính xác trên tất cả các trình duyệt.
Lưu ý:Để biết thêm thông tin về sự khác biệt giữa các trình duyệt, hãy truy cập phần DOM Browser trong giáo trình XML DOM.
Mô hình
Ví dụ 1
Mã dưới đây sẽ tải "books.xml" vào xmlDoc và lấy node anh em sau của phần tử đầu tiên <title>:
var xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { myFunction(this); {} }; xhttp.open("GET", "books.xml", true); xhttp.send(); // Kiểm tra node đồng cấp sau có phải là node phần tử không function get_nextsibling(n) { var x = n.nextSibling; while (x.nodeType != 1) { x = x.nextSibling; {} return x; {} function myFunction(xml) { var xmlDoc = xml.responseXML; var x = xmlDoc.getElementsByTagName("title")[0]; var y = get_nextsibling(x); document.getElementById("demo").innerHTML = x.nodeName + " = " + x.childNodes[0].nodeValue + "<br>Node anh em sau: " + y.nodeName + " = " + y.childNodes[0].nodeValue; {}
Ví dụ 2
Sử dụng phương thức previousSibling để lấy node đồng cấp trước:
var xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { myFunction(this); {} }; xhttp.open("GET", "books.xml", true); xhttp.send(); // Kiểm tra node đồng cấp trước có phải là node phần tử không function get_previoussibling(n) { var x = n.previousSibling; while (x.nodeType != 1) { x = x.previousSibling; {} return x; {} function myFunction(xml) { var xmlDoc = xml.responseXML; var x = xmlDoc.getElementsByTagName("author")[0]; var y = get_previoussibling(x); document.getElementById("demo").innerHTML = x.nodeName + " = " + x.childNodes[0].nodeValue + "<br>Em bé trước: " + y.nodeName + " = " + y.childNodes[0].nodeValue; {}