JavaScript. Подробное руководство, 6-е издание
Шрифт:
Обратите внимание, что узлы
Text
и Comment
не имеют дочерних узлов. Это означает, что описанное выше свойство Node.parentNode
никогда не возвращает узлы типа Text
или Comment
. Значением свойства parentNode
любого объекта Element
всегда будет другой объект Element
или корень дерева - объект Document
или DocumentFragment
. Второй частью прикладного интерфейса навигации по элементам документа являются свойства объекта
Element
, аналогичные свойствам доступа к дочерним и братским узлам объекта Node
:
firstElementChild, lastElementChild
Похожи на свойства
firstChild
и lastChild
, но возвращают дочерние элементы.
nextElementSibling, previousElementSibling
Похожи на свойства
nextSibling
и previousSibling
, но возвращают братские элементы.
childElementCount
Количество дочерних элементов. Возвращает то же значение, что и свойство
children.length
. Эти свойства доступа к дочерним и братским элементам стандартизованы и реализованы во всех текущих броузерах, кроме IE. [37]
37
http://www.w3.org/TR/ElementTraversal.
Поскольку прикладной интерфейс навигации по элементам документа реализован не во всех броузерах, вам может потребоваться определить переносимые функции навигации, как в примере 15.2.
Пример 15.2. Переносимые функции навигации по документу
/**
* Возвращает ссылку на n-го предка элемента е или null, если нет такого предка
* или если этот предок не является элементом Element
* (например, Document или DocumentFragment).
* Если в аргументе n передать 0, функция вернет сам элемент е.
* Если в аргументе n передать 1 (или вообще опустить этот аргумент),
* функция вернет родительский элемент.
* Если в аргументе n передать 2, функция вернет родителя родительского элемента и т. д. */
function parent(e, n) {
if (n === undefined) n = 1;
while(n-- && e) e = e.parentNode;
if (!e || e.nodeType !== 1) return null;
return e;
}
/**
* Возвращает n-й братский элемент элемента е.
* Если в аргументе п передать положительное число, функция вернет следующий
* n-й братский элемент.
* Если в аргументе п передать отрицательное число, функция вернет предыдущий
* n-й братский элемент.
* Если в аргументе п передать ноль, функция вернет сам элемент е.
*/
function sibling(e.n) {
while(e && n !== 0) { // Если e не определен, просто вернуть его
if (n > 0) { // Отыскать следующий братский элемент
if (е.nextElementSibling) е = е.nextElementSibling;
else {
for(e=e.nextSibling; e && e.nodeType !== 1; e=e.nextSibling)
/* пустой цикл */ ;
}
n--;
}
else { // Отыскать предыдущий братский элемент
if (e.previousElementSibing) e = e.previousElementSibling;
else {
for(e=e.previousSibling;e&&e.nodeType!==1;e=e.previousSibling)
/* пустой цикл */ ;
}
n++;
}
}
return e;
}
/**
* Возвращает n-й дочерний элемент элемента е или null, если нет такого
Поделиться:
Популярные книги
Чехов. Книга 2
2. Адвокат Чехов
Фантастика:
фэнтези
альтернативная история
аниме
5.00
рейтинг книги
На границе империй. Том 5
5. Фортуна дама переменчивая
Фантастика:
боевая фантастика
попаданцы
7.50
рейтинг книги
Лекарь Империи 3
3. Лекарь Империи
Фантастика:
городское фэнтези
аниме
дорама
фэнтези
попаданцы
5.00
рейтинг книги
Изгой Проклятого Клана. Том 3
3. Изгой
Фантастика:
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Печать мастера
6. Гибрид
Фантастика:
попаданцы
технофэнтези
аниме
фэнтези
6.00
рейтинг книги
Вечный. Книга II
2. Вечный
Фантастика:
боевая фантастика
попаданцы
рпг
5.00
рейтинг книги
Атаман царского Спецназа
Боевая фантастика Ю. Корчевского
Фантастика:
боевая фантастика
попаданцы
альтернативная история
6.00
рейтинг книги
Ворон
Фантастика:
попаданцы
фэнтези
гаремник
5.00
рейтинг книги
Последний Герой. Том 5
5. Последний герой
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Товарищ "Чума" 2
2. Товарищ "Чума"
Фантастика:
городское фэнтези
попаданцы
альтернативная история
5.00
рейтинг книги
Товарищ "Чума" 10
10. Товарищ "Чума"
Фантастика:
городское фэнтези
попаданцы
альтернативная история
5.00
рейтинг книги
Точка Бифуркации V
5. ТБ
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Геном хищника. Книга четвертая
4. Я - Легенда!
Фантастика:
боевая фантастика
рпг
попаданцы
5.00
рейтинг книги
Твое сердце будет разбито. Книга 1
Любовные романы:
современные любовные романы
5.50