XML DOM свойство previousSibling
Определение и использование
previousSibling
Атрибут возвращает предыдущего同级 узла выбранного элемента (предыдущего узла в той же иерархии дерева).
Если такой узел не существует, то этот атрибут возвращает null.
Синтаксис
elementNode.previousSibling
Примечание:Firefox и большинство других браузеров будут считать пробелы или отступы текстовыми узлами, а Internet Explorer нет. Поэтому в следующем примере мы используем функцию для проверки типа узла предыдущего同级 узла.
Элементный узел nodeType равен 1, поэтому если предыдущий同级 узел не является элементным узлом, то перемещается к предыдущему узлу и проверяется, является ли этот узел элементным узлом. Это продолжится до тех пор, пока не будет найден предыдущий同级 узел (должен быть элементным узлом). Таким образом, результат будет правильным во всех браузерах.
Совет:Для получения дополнительной информации о различиях между браузерами обратитесь к разделу DOM браузеров в руководстве по XML DOM.
Пример
Пример 1
Ниже приведен код, который загружает "books.xml" в xmlDoc и получает предыдущий элементного брата первого <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(); // Проверка, является ли предыдущий элементным узлом 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>Предыдущий брат: " + y.nodeName + " = " + y.childNodes[0].nodeValue; {}
Пример 2
Использование nextSibling для получения следующего элементного брата узла:
var xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { myFunction(this); {} }; xhttp.open("GET", "books.xml", true); xhttp.send(); // Проверка, является ли следующий элементным узлом 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>Следующий брат: " + y.nodeName + " = " + y.childNodes[0].nodeValue; {}