XML DOM previousSibling-Attribut
Definition und Verwendung
previousSibling
Das Attribut gibt den vorherigen gleichstufigen Knoten des ausgewählten Elements zurück (den vorherigen Knoten im gleichen Baum-Level).
Falls kein solcher Knoten existiert, wird das Attribut null zurückgegeben.
Syntax
elementNode.previousSibling
Hinweis:Firefox und die meisten anderen Browser betrachten Leerzeichen oder Zeilenumbrüche als Textknoten, während Internet Explorer dies nicht tut. Daher wird in den folgenden Beispielen eine Funktion verwendet, um den Knotentyp des vorherigen gleichstufigen Knotens zu überprüfen.
Der nodeType des Elementknotens beträgt 1, daher wird, wenn der vorherige gleichstufige Knoten kein Elementknoten ist, zum vorherigen Knoten gewechselt und überprüft, ob der 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
Verwenden Sie nextSibling, um den nächsten gleichstufigen Knoten eines 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 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; {}