Документ: метод createNodeIterator()
Базовая реализация Широко доступна
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с июля 2015 года.
Метод Document.createNodeIterator() возвращает новый объект NodeIterator.
Синтаксис
createNodeIterator(root) createNodeIterator(root, whatToShow) createNodeIterator(root, whatToShow, filter)
Параметры
root-
Узловой элемент, с которого начинается обход
NodeIterator. whatToShowНеобязательно-
Необязательный
unsigned longмаской, созданной путем объединения константных свойствNodeFilter. Это удобный способ фильтрации узлов определенного типа. По умолчанию используется0xFFFFFFFF, представляющая константуSHOW_ALL.Константа Числовое значение Описание NodeFilter.SHOW_ALL4294967295(максимальное значениеunsigned long)Отображает все узлы. NodeFilter.SHOW_ATTRIBUTEУстаревший2Отображает узлы атрибутов Attr. Это имеет смысл только при созданииTreeWalkerс узломAttrв качестве корневого. В этом случае это означает, что узел атрибута будет отображаться первым в итерации или обходе. Поскольку атрибуты никогда не являются дочерними узлами других узлов, они не отображаются при обходе по дереву документа.NodeFilter.SHOW_CDATA_SECTIONУстаревший8Отображает узлы CDATASection.NodeFilter.SHOW_COMMENT128Отображает узлы Comment.NodeFilter.SHOW_DOCUMENT256Отображает узлы Document.NodeFilter.SHOW_DOCUMENT_FRAGMENT1024Отображает узлы DocumentFragment.NodeFilter.SHOW_DOCUMENT_TYPE512Отображает узлы DocumentType.NodeFilter.SHOW_ELEMENT1Отображает узлы Element.NodeFilter.SHOW_ENTITYУстаревший32Устаревшее, больше не используется. NodeFilter.SHOW_ENTITY_REFERENCEУстаревший16Устаревшее, больше не используется. NodeFilter.SHOW_NOTATIONУстаревший2048Устаревшее, больше не используется. NodeFilter.SHOW_PROCESSING_INSTRUCTION64Отображает узлы ProcessingInstruction.NodeFilter.SHOW_TEXT4Отображает узлы Text. filterНеобязательно-
Функция обратного вызова или объект с методом
acceptNode(). Функция или метод будут вызываться для каждого узла в поддереве, основанном на корне, который принимается во внимание по флагу whatToShow, чтобы определить, следует ли включать его в список итерируемых узлов. Метод должен возвращать одно из значенийNodeFilter.FILTER_ACCEPT,NodeFilter.FILTER_REJECT, илиNodeFilter.FILTER_SKIP. См. Пример.Для
createNodeIterator, значенияNodeFilter.FILTER_REJECTиNodeFilter.FILTER_SKIPэквивалентны. Этот узел не будет включен в список итерируемых узлов, но его дочерние узлы будут продолжать итерироваться.
Возвращаемое значение
Новый объект NodeIterator.
Примеры
const nodeIterator = document.createNodeIterator(
document.body,
NodeFilter.SHOW_ELEMENT,
(node) =>
node.nodeName.toLowerCase() === "p"
? NodeFilter.FILTER_ACCEPT
: NodeFilter.FILTER_REJECT,
);
const pars = [];
let currentNode;
while ((currentNode = nodeIterator.nextNode())) {
pars.push(currentNode);
}
То же самое, но с использованием объекта с методом acceptNode():
const nodeIterator = document.createNodeIterator(
document.body,
NodeFilter.SHOW_ELEMENT,
{
acceptNode(node) {
return node.nodeName.toLowerCase() === "p"
? NodeFilter.FILTER_ACCEPT
: NodeFilter.FILTER_REJECT;
},
},
);
const pars = [];
let currentNode;
while ((currentNode = nodeIterator.nextNode())) {
pars.push(currentNode);
}
Спецификации
| Спецификация |
|---|
| DOM # dom-document-createnodeiterator |
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
createNodeIterator |
1 | 12 | 1 | 9 | 3 | 18 | 4 | 10.1 | 1 | 1.0 | 4.4 |
© 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/Document/createNodeIterator