XML DOM previousSibling property

Definition and Usage

previousSibling The property returns the node before the adjacent node (the subsequent node at the same tree level).

If such a node does not exist, this property returns null.

Syntax

nodeObject.previousSibling
Tips and Notes

Note:Firefox and most other browsers consider whitespace or newline as text nodes, while Internet Explorer does not. In the following example, we use a function to check the node type of the previous sibling node.

Element nodes' nodeType is 1, so if the previous sibling node is not an element node, move to the next node and check if the node is an element node. This will continue until the previous sibling node (must be an element node) is found. As a result, it is correct in all browsers.

Hint:For more information on differences between browsers, please visit the DOM Browser section in the XML DOM tutorial.

Example

Example 1

The following code loads "books.xml" into xmlDoc and gets the previous sibling node of the first <author> element:

var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
   if (this.readyState == 4 && this.status == 200) {
       myFunction(this);
   }
};
xhttp.open("GET", "books.xml", true);
xhttp.send();
// Check if the previous sibling node is an element node
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>Previous sibling: " + y.nodeName + " = " +
    y.childNodes[0].nodeValue;
}

Kişisel olarak deneyin

Example 2

Get the next sibling node of the element:

var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
        myFunction(this);
    }
};
xhttp.open("GET", "books.xml", true);
xhttp.send();
// Check if the next sibling node is an element node
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>Next sibling: " + y.nodeName + " = " + 
    y.childNodes[0].nodeValue;
}

Kişisel olarak deneyin