Spec-Zone.ru › Web APIs

TreeWalker

Базовая Широко доступна

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с июля 2015 года.

  • Узнать больше
  • Полная совместимость
  • Отправить отзыв

Объект TreeWalker представляет узлы поддерева документа и позицию внутри них.

Экземпляр TreeWalker можно создать, используя метод Document.createTreeWalker().

Свойства экземпляра

Этот интерфейс не наследует никаких свойств.

TreeWalker.root Только для чтения

Возвращает корневой Node, как указано при создании TreeWalker.

TreeWalker.whatToShow Только для чтения

Возвращает unsigned long, представляющий собой битовую маску, составленную из констант, описывающих типы Node, которые должны быть представлены. Узлы, не соответствующие условиям, пропускаются, но их потомки могут быть включены, если это уместно. Возможные значения:

Константа Числовое значение Описание
NodeFilter.SHOW_ALL 4294967295 (т.е. максимальное значение unsigned long) Отображает все узлы.
NodeFilter.SHOW_ATTRIBUTE Устаревшее 2 Отображает узлы атрибутов Attr. Это имеет смысл только при создании TreeWalker с узлом Attr в качестве корня. В этом случае это означает, что узел атрибута будет появляться в первой позиции итерации или обхода. Поскольку атрибуты никогда не являются потомками других узлов, они не отображаются при обходе древовидной структуры документа.
NodeFilter.SHOW_CDATA_SECTION Устаревшее 8 Отображает узлы CDATASection.
NodeFilter.SHOW_COMMENT 128 Отображает узлы комментариев Comment.
NodeFilter.SHOW_DOCUMENT 256 Отображает узлы документов Document.
NodeFilter.SHOW_DOCUMENT_FRAGMENT 1024 Отображает узлы фрагментов документов DocumentFragment.
NodeFilter.SHOW_DOCUMENT_TYPE 512 Отображает узлы типов документов DocumentType.
NodeFilter.SHOW_ELEMENT 1 Отображает узлы элементов Element.
NodeFilter.SHOW_ENTITY Устаревшее 32 Устаревшее, больше не используется.
NodeFilter.SHOW_ENTITY_REFERENCE Устаревшее 16 Устаревшее, больше не используется.
NodeFilter.SHOW_NOTATION Устаревшее 2048 Устаревшее, больше не используется.
NodeFilter.SHOW_PROCESSING_INSTRUCTION 64 Отображает узлы инструкций обработки ProcessingInstruction.
NodeFilter.SHOW_TEXT 4 Отображает узлы текста Text.
TreeWalker.filter Только для чтения

Возвращает NodeFilter , связанное с этим TreeWalker, используемое для выбора соответствующих узлов.

TreeWalker.currentNode

Узел Node, на который в данный момент указывает TreeWalker.

Методы экземпляра

Этот интерфейс не наследует никаких методов.

Примечание: В контексте TreeWalker, узел является видимым, если он существует в логическом представлении, определяемом параметрами whatToShow и filter. (Не имеет значения, отображается ли узел на экране.)

TreeWalker.parentNode()

Перемещает текущий Node к первому видимому предку в порядке документа и возвращает найденный узел. Также перемещает текущий узел в этот. Если такого узла не существует или он предшествует узлу корня, определенному при создании объекта, возвращает null и текущий узел не изменяется.

TreeWalker.firstChild()

Перемещает текущий Node к первому видимому потомку текущего узла и возвращает найденного потомка. Также перемещает текущий узел в этого потомка. Если такого потомка не существует, возвращает null и текущий узел не изменяется. Обратите внимание, что узел, возвращаемый firstChild(), зависит от значения whatToShow, установленного при создании объекта TreeWalker. Предположим следующую структуру HTML и если вы установите whatToShow на NodeFilter.SHOW_ALL, вызов firstChild() вернет узел Text, а не объект HTMLDivElement.

<!doctype html>
<html lang="en">
  <head><title>Demo</title>
  <body>
    <div id="container"></div>
  </body>
</html>
let walker = document.createTreeWalker(document.body, NodeFilter.SHOW_ALL);
let node = walker.firstChild(); // nodeName: "#text"

Но если мы сделаем:

let walker = document.createTreeWalker(
  document.body,
  NodeFilter.SHOW_ELEMENT,
);
let node = walker.firstChild(); // nodeName: "DIV"

То же самое относится к nextSibling(), previousSibling(), firstChild() и lastChild()

TreeWalker.lastChild()

Перемещает текущий Node к последнему видимому потомку текущего узла и возвращает найденного потомка. Также перемещает текущий узел в этого потомка. Если такого потомка не существует, возвращается null и текущий узел не изменяется.

TreeWalker.previousSibling()

Перемещает текущий Node к предыдущему брату, если таковой есть, и возвращает найденного брата. Если такого узла нет, возвращается null и текущий узел не изменяется.

TreeWalker.nextSibling()

Перемещает текущий Node к следующему брату, если таковой есть, и возвращает найденного брата. Если такого узла нет, возвращается null и текущий узел не изменяется.

TreeWalker.previousNode()

Перемещает текущий Node к предыдущему видимому узлу в порядке документа и возвращает найденный узел. Также перемещает текущий узел в этот. Если такого узла не существует или он предшествует узлу корня, определенному при создании объекта, возвращает null и текущий узел не изменяется.

TreeWalker.nextNode()

Перемещает текущий Node к следующему видимому узлу в порядке документа и возвращает найденный узел. Также перемещает текущий узел в этот. Если такого узла не существует, возвращает null и текущий узел не изменяется.

Спецификации

Спецификация
DOM
# interface-treewalker

Совместимость браузеров

Рабочий стол Мобильный
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на IOS Samsung Internet WebView Android
TreeWalker 1 12 4 9 3 18 4 10.1 3 1.0 3
currentNode 1 12 4 9 3 18 4 10.1 3 1.0 3
filter 1 12 4 9 3 18 4 10.1 3 1.0 3
firstChild 1 12 4 9 3 18 4 10.1 3 1.0 3
lastChild 1 12 4 9 3 18 4 10.1 3 1.0 3
nextNode 1 12 4 9 3 18 4 10.1 3 1.0 3
nextSibling 1 12 4 9 3 18 4 10.1 3 1.0 3
parentNode 1 12 4 9 3 18 4 10.1 3 1.0 3
previousNode 1 12 4 9 3 18 4 10.1 3 1.0 3
previousSibling 1 12 4 9 3 18 4 10.1 3 1.0 3
root 1 12 4 9 3 18 4 10.1 3 1.0 3
whatToShow 1 12 4 9 3 18 4 10.1 3 1.0 3

См. также

  • Метод создания: Document.createTreeWalker().
  • Соответствующий интерфейс: NodeIterator.

© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API