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
Tips and Notes

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;
{}

Thử trực tiếp

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;
{}

Thử trực tiếp