XML DOM previousSibling-Attribut
Definition und Verwendung
previousSibling
Das Attribut gibt den Knoten vor dem nächsten Knoten zurück (den Nachfolgerknoten im selben Baumebene).
Falls kein solcher Knoten existiert, wird dieses Attribut null zurückgeben.
Syntax
nodeObject.previousSibling
Hinweis:Firefox und die meisten anderen Browser betrachten Leerzeichen oder Zeilenumbrüche als Textknoten, während Internet Explorer dies nicht tut. Im folgenden Beispiel wird mit einer Funktion der Knotentyp des vorherigen gleichstufigen Knotens überprüft.
Der nodeType des Elementknotens beträgt 1, daher wird, wenn der vorherige gleichstufige Knoten kein Elementknoten ist, zum nächsten Knoten weitergegangen und überprüft, ob dieser Knoten ein Elementknoten ist. Dies wird fortgesetzt, bis der vorherige 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 vorherigen gleichstufigen Knoten des ersten <author>-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 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; }
Beispiel 2
Den nächsten gleichstufigen Knoten 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 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>Next sibling: " + y.nodeName + " = " + y.childNodes[0].nodeValue; }