Свойство lastChild в XML DOM

Определение и использование

lastChild Свойство возвращает последний подузел указанного узла.

Синтаксис

nodeObject.lastChild
Советы и заметки

Примечание:Firefox и большинство других браузеров считают пробелы или переводы строк узлами текста, в то время как Internet Explorer этого не делает. Поэтому в следующем примере мы используем функцию для проверки типа узла последнего подузла.

Узел элемента имеет nodeType 1, поэтому если последний ребенок не является элементом, он перемещается к предыдущему узлу и проверяется, является ли этот узел элементом. Это продолжается до тех пор, пока не будет найден последний узел (должен быть элементом). Таким образом, результат будет правильным во всех браузерах.

Совет:Для получения дополнительной информации о различиях между браузерами обратитесь к разделу DOM браузеров в руководстве по XML DOM.

Пример

Пример 1

Ниже приведен код, который загружает "books.xml" в xmlDoc и отображает имя последнего ребенка документа:

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_lastchild(n) {
    var x = n.lastChild;
    while (x.nodeType != 1) {
        x = x.previousSibling;
    }
    return x;
}
function myFunction(xml) {
    var xmlDoc = xml.responseXML;
    var x = get_lastchild(xmlDoc);
    document.getElementById("demo").innerHTML =
    "Имя узла: " + x.nodeName +"}}
    " (nodetype: " + x.nodeType + ")<br>"
}

Попробуйте сами

Пример 2

Получение первого ребенка документа:

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_firstchild(n) {
    var x = n.firstChild;
    while (x.nodeType != 1) {
        x = x.nextSibling;
    }
    return x;
}
function myFunction(xml) {
    var xmlDoc = xml.responseXML;
    // Получение первого ребенка документа
    var x = get_firstchild(xmlDoc);
    // Получение первого ребенка корневого элемента
    var y = get_firstchild(xmlDoc.documentElement);
    document.getElementById("demo").innerHTML =
    "Имя узла: " + x.nodeName +"}} 
    " (тип_узла: " + x.nodeType + ")<br>" +
    "Имя узла: " + y.nodeName + 
    " (тип_узла: " + y.nodeType + ")<br>";
}

Попробуйте сами