Document: createNodeIterator() 方法
Document.createNodeIterator()
方法返回一个新的 NodeIterator
对象。
语法
js
createNodeIterator(root)
createNodeIterator(root, whatToShow)
createNodeIterator(root, whatToShow, filter)
参数
root
-
开始
NodeIterator
遍历的根节点。 whatToShow
可选-
一个可选的
unsigned long
,表示通过组合NodeFilter
的常量属性创建的位掩码。这是一种方便的方式来过滤某些类型的节点。它默认为0xFFFFFFFF
,表示SHOW_ALL
常量。常量 数值 描述 NodeFilter.SHOW_ALL
4294967295
(即unsigned long
的最大值)显示所有节点。 NodeFilter.SHOW_ATTRIBUTE
已弃用2
显示属性 Attr
节点。这仅在使用Attr
节点作为根节点创建TreeWalker
时才有意义。在这种情况下,这意味着属性节点将出现在迭代或遍历的第一个位置。由于属性永远不是其他节点的子节点,因此在遍历文档树时不会出现它们。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
节点。 filter
可选-
回调函数或具有
acceptNode()
方法的对象。该函数或方法将针对基于根节点的子树中的每个节点(作为whatToShow
标志接受的包含节点)调用,以确定是否将其包含在可迭代节点列表中。该方法应返回NodeFilter.FILTER_ACCEPT
、NodeFilter.FILTER_REJECT
或NodeFilter.FILTER_SKIP
之一。请参阅 示例。对于
createNodeIterator
,值NodeFilter.FILTER_REJECT
和NodeFilter.FILTER_SKIP
是等效的。此节点将不包含在可迭代节点列表中,但其子节点将继续被迭代。
返回值
一个新的 NodeIterator
对象。
示例
js
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()
方法的对象
js
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 |
浏览器兼容性
BCD 表格仅在启用了 JavaScript 的浏览器中加载。