XML DOM nextSibling-Eigenschaft
Definition und Verwendung
nextSibling
Die Eigenschaft gibt den Knoten zurück, der unmittelbar nach einem bestimmten Knoten folgt (der nächste Knoten auf der gleichen Baumebene).
Falls kein solcher Knoten existiert, gibt die Eigenschaft null zurück.
Syntax
nodeObject.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.
Das nodeType des Elementknotens beträgt 1, daher bewegt sich der nächste Brüderknoten, wenn der nächste Brüderknoten kein Elementknoten ist, zum nächsten Knoten und überprüft, ob dieser Knoten ein Elementknoten ist. Dies wird fortgesetzt, bis der nächste gleichstufige Knoten (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 Klassenbruder 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 Klassenbruder 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 Klassenbruder: " + y.nodeName + " = " + y.childNodes[0].nodeValue; {}
Beispiel 2
Den vorherigen Klassenbruder des Knotens 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 Klassenbruder 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; {}