XML DOM nextSibling-Eigenschaft
Definition und Verwendung
nextSibling
Diese Eigenschaft gibt den nächsten Gleichknoten des ausgewählten Elements zurück (den nächsten Knoten im gleichen Baumebene).
Falls kein solcher Knoten existiert, gibt diese Eigenschaft null zurück.
Syntax
elementNode.nextSibling
Hinweis:Firefox und die meisten anderen Browser betrachten Leerzeichen oder Zeilenumbrüche als Textknoten, während Internet Explorer dies nicht tut. Daher verwenden wir in den folgenden Beispielen eine Funktion, um den Knotentyp des nächsten Brüderknotens zu überprüfen.
Der nodeType des Elementknotens beträgt 1, daher bewegt sich der nächste Brüderknoten, wenn dieser kein Elementknoten ist, zum nächsten Knoten und überprüft, ob dieser Knoten ein Elementknoten ist. Dies wird fortgesetzt, bis der nächste Gleichknoten (muss ein Elementknoten sein) gefunden wird. Auf diese Weise ist das Ergebnis in allen Browsern korrekt.
Hinweis:Für mehr Informationen über die Unterschiede zwischen Browsern besuchen Sie bitte das Kapitel DOM-Browser im XML DOM-Tutorial.
Beispiel
Beispiel 1
Das folgende Code lädt "books.xml" in xmlDoc und holt den nächsten gleichstufigen Knoten des ersten <title>-Elements:
var xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { myFunction(this); } }; xhttp.open("GET", "books.xml", true); xhttp.send(); // Überprüfen, ob der nächste gleichstufige Knoten ein Elementknoten ist 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>Nächster Bruder: " + y.nodeName + " = " + y.childNodes[0].nodeValue; }
Beispiel 2
Verwenden Sie die Methode previousSibling, um den vorherigen gleichstufigen Knoten des Knotens zu erhalten:
var xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { myFunction(this); } }; xhttp.open("GET", "books.xml", true); xhttp.send(); // Überprüfen, ob der vorherige gleichstufige Knoten ein Elementknoten ist 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>Previous sibling: " + y.nodeName + " = " + y.childNodes[0].nodeValue; }