Proprietà nextSibling del XML DOM
Definizione e uso
nextSibling
L'attributo restituisce il nodo同级 successivo dell'elemento selezionato (il nodo successivo allo stesso livello dell'albero).
Se non esiste tale nodo, l'attributo restituisce null.
Sintassi
elementNode.nextSibling
Attenzione:Firefox e la maggior parte degli altri browser considerano i spazi bianchi o le linee di ritorno come nodi di testo, mentre Internet Explorer non lo fa. Pertanto, nell'esempio seguente, utilizziamo una funzione per controllare il tipo di nodo del nodo fratello successivo.
Il tipo di nodo di un nodo di elemento è 1, quindi se il nodo fratello successivo non è un nodo di elemento, si sposta al nodo successivo e verifica se il nodo è un nodo di elemento. Questo processo continuerà fino a trovare il prossimo nodo同级 (deve essere un nodo di elemento). In questo modo, i risultati sono corretti in tutti i browser.
Suggerimento:Per ulteriori informazioni sulle differenze tra i browser, visitare la sezione DOM Browser dell'iniziozione XML DOM.
Esempio
Esempio 1
Il codice seguente carica "books.xml" nel xmlDoc e ottiene il successore del primo elemento <title>:
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>Successore: " + y.nodeName + " = " + y.childNodes[0].nodeValue; }
Esempio 2
Utilizzare il metodo previousSibling per ottenere il 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(); // 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 + "Precedente fratello: " + y.nodeName + " = " + y.childNodes[0].nodeValue; }