Propriété previousSibling du XML DOM

Définition et utilisation

previousSibling La propriété renvoie le noeud précédent immédiat (le noeud suivant au même niveau dans l'arbre).

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

Syntaxe

nodeObject.previousSibling
Conseils et Notes

Attention :Firefox et la plupart des autres navigateurs considèrent les espaces ou les sauts de ligne comme des noeuds texte, tandis qu'Internet Explorer ne le fait pas. 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 suivant et vérifie si ce noeud est un noeud élément. Cela continuera jusqu'à ce qu'il trouve le noeud frère précédent (doit être un noeud élément). De cette manière, le résultat est correct dans tous les navigateurs.

Avis :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 précédent élément frère 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 si le précédent élément frère est un nœud élément
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>Précédent frère : " + y.nodeName + " = " +
    y.childNodes[0].nodeValue;
{}

Essayer par vous-même

Exemple 2

Obtenir le prochain élément frère du nœud :

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 si le prochain élément frère est un nœud élément
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 par vous-même