XML DOM poprzednia własność rodzeństwa
❮ Obiekt elementu
Przykład
Poniższy fragment kodu ładuje " books.xml " do xmlDoc i pobiera poprzedni węzeł równorzędny z pierwszego elementu <author>:
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 +
"<br>Previous sibling: " + y.nodeName + " = " +
y.childNodes[0].nodeValue;
}
Wynikiem powyższego kodu będzie:
author = Giada De Laurentiis
Previous sibling: title = Everyday Italian
Definicja i użycie
Właściwość previousSibling zwraca poprzedni węzeł rodzeństwa (poprzedni węzeł na tym samym poziomie drzewa) wybranego elementu
Jeśli nie ma takiego węzła, ta właściwość zwraca wartość null.
Składnia
elementNode.previousSibling
Wskazówki i uwagi
Uwaga: Firefox i większość innych przeglądarek traktuje puste odstępy lub nowe wiersze jako węzły tekstowe, Internet Explorer nie. Tak więc w poniższym przykładzie mamy funkcję, która sprawdza typ węzła poprzedniego węzła rodzeństwa.
Węzły elementu mają nodeType równy 1, więc jeśli poprzedni węzeł równorzędny nie jest węzłem elementu, przechodzi do poprzedniego węzła i sprawdza, czy ten węzeł jest węzłem elementu. Trwa to do momentu znalezienia poprzedniego węzła równorzędnego (który musi być węzłem elementu). W ten sposób wynik będzie poprawny we wszystkich przeglądarkach.
Wskazówka: aby dowiedzieć się więcej o różnicach między przeglądarkami, odwiedź nasz rozdział Przeglądarki DOM w naszym samouczku XML DOM.
Próbne wersje demonstracyjne
❮ Obiekt elementu