语法
js
createNodeIterator(root)
createNodeIterator(root, whatToShow)
createNodeIterator(root, whatToShow, filter)
参数
根-
作为
NodeIterator遍历起始点的根节点。 whatToShow可选-
一个可选的
unsigned long,表示通过组合NodeFilter的常量属性创建的位掩码。这是一种方便地过滤特定类型节点的方法。它默认为0xFFFFFFFF,表示SHOW_ALL常量。常量 数值 描述 NodeFilter.SHOW_ALL4294967295(即unsigned long的最大值)显示所有节点。 NodeFilter.SHOW_ATTRIBUTE2显示属性 Attr节点。这仅在创建以Attr节点为根的TreeWalker时有意义。在这种情况下,它意味着属性节点将出现在迭代或遍历的第一个位置。由于属性永远不是其他节点的子节点,因此在遍历文档树时它们不会出现。NodeFilter.SHOW_CDATA_SECTION8显示 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 对象。
示例
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 |
浏览器兼容性
加载中…