XML DOM previousSibling Property

Definition and Usage

previousSibling This property returns the previous sibling node of the selected element (the previous node at the same tree level).

If no such node exists, this property returns null.

Syntax

elementNode.previousSibling
Tips and Notes

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

The nodeType of element nodes is 1, so if the previous sibling node is not an element node, move to the previous node and check if the node is an element node. This will continue until the previous sibling node (which must be an element node) is found. As a result, this works correctly in all browsers.

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

Instance

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

Try It Yourself

Example 2

Use nextSibling to get the next sibling node of an 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;
{}

Try It Yourself