Propiedad previousSibling del XML DOM

Definición y uso

previousSibling La propiedad devuelve el nodo anterior al nodo adjacente (el nodo siguiente en el mismo nivel del árbol).

Si no existe tal nodo, esta propiedad devuelve null.

Sintaxis

nodeObject.previousSibling
Consejos y Notas

Nota:Firefox y la mayoría de otros navegadores consideran los espacios en blanco o las salidas de línea como nodos de texto, mientras que Internet Explorer no. En el siguiente ejemplo, utilizamos una función para verificar el tipo de nodo del nodo同级 anterior.

El nodeType del nodo de elemento es 1, por lo que si el nodo同级 anterior no es un nodo de elemento, se mueve al siguiente nodo y se verifica si el nodo es un nodo de elemento. Esto continuará hasta que se encuentre el nodo同级 anterior (debe ser un nodo de elemento). De esta manera, el resultado es correcto en todos los navegadores.

Consejo:Para obtener más información sobre las diferencias entre navegadores, visite la sección DOM Navegadores del tutorial XML DOM.

Ejemplo

Ejemplo 1

La siguiente código carga "books.xml" en xmlDoc y obtiene el nodo hermano anterior同级 del primer elemento <author>:

var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
   if (this.readyState == 4 && this.status == 200) {
       myFunction(this);
   }
};
xhttp.open("GET", "books.xml", true);
xhttp.send();
// Verifica si el hermano anterior同级 nodo es un nodo de elemento
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>Hermano siguiente: " + y.nodeName + " = " +
    y.childNodes[0].nodeValue;
}

Prueba personalmente

Ejemplo 2

Obtener el siguiente hermano同级 nodo del nodo:

var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
        myFunction(this);
    }
};
xhttp.open("GET", "books.xml", true);
xhttp.send();
// Verifica si el siguiente hermano同级 nodo es un nodo de elemento
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 +
    "Próximo hermano: " + y.nodeName + " = " + 
    y.childNodes[0].nodeValue;
}

Prueba personalmente