Propiedad previousSibling del XML DOM

Definición y uso

previousSibling Esta propiedad devuelve el nodo同级 anterior del elemento seleccionado (el nodo anterior en el mismo nivel del árbol).

Si no existe tal nodo, esta propiedad devuelve null.

Sintaxis

elementNode.previousSibling
Consejos y Notas

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

El nodo de elemento nodeType es 1, por lo que si el nodo同级 anterior no es un nodo de elemento, se mueve al nodo anterior 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 sección de código cargará "books.xml" en xmlDoc y obtendrá el hermano anterior de nivel 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 de nivel 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 anterior: " + y.nodeName + " = " +
    y.childNodes[0].nodeValue;
{}

Prueba personalmente

Ejemplo 2

Usa nextSibling para obtener el siguiente hermano de nivel 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 de nivel 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 +
    "<br> Hermano siguiente: " + y.nodeName + " = " + 
    y.childNodes[0].nodeValue;
{}

Prueba personalmente