Propriété previousSibling du XML DOM

Définition et utilisation

previousSibling Cette propriété renvoie le noeud frère précédent de l'élément sélectionné (le noeud précédent au même niveau dans l'arbre).

Si aucun tel noeud n'existe, cette propriété renvoie null.

Syntaxe

elementNode.previousSibling
Conseils et Notes

Remarque :Firefox et la plupart des autres navigateurs considèrent les espaces ou les sauts de ligne comme des noeuds texte, tandis que Internet Explorer ne le fait pas. Par conséquent, dans l'exemple suivant, nous utilisons une fonction pour vérifier le type de noeud du noeud frère précédent.

Le nodeType de l'élément est 1, donc si le noeud frère précédent n'est pas un noeud élément, il se déplace au noeud précédent et vérifie si ce noeud est un noeud élément. Cela continuera jusqu'à ce que le noeud frère précédent (doit être un noeud élément) soit trouvé. De cette manière, le résultat est correct dans tous les navigateurs.

Astuce:Pour plus d'informations sur les différences entre les navigateurs, veuillez consulter la section DOM navigateur du tutoriel XML DOM.

Exemple

Exemple 1

Le code suivant charge "books.xml" dans xmlDoc et récupère le noeud précédent de même niveau du premier élément <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();
// Vérification du node précédent de même niveau s'il s'agit d'un noeud élémentaire
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>Frère suivant: " + y.nodeName + " = " +
    y.childNodes[0].nodeValue;
}

Essayer personnellement

Exemple 2

Utilisation de nextSibling pour obtenir le noeud suivant de même niveau :

var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
        myFunction(this);
    }
};
xhttp.open("GET", "books.xml", true);
xhttp.send();
// Vérification du node suivant de même niveau s'il s'agit d'un noeud élémentaire
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>Frère suivant: " + y.nodeName + " = " + 
    y.childNodes[0].nodeValue;
}

Essayer personnellement