语法
js
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_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_ENTITY32旧的,已无法再使用。 NodeFilter.SHOW_ENTITY_REFERENCE16旧的,已无法再使用。 NodeFilter.SHOW_NOTATION2048旧的,已无法再使用。 NodeFilter.SHOW_PROCESSING_INSTRUCTION64显示 ProcessingInstruction节点。NodeFilter.SHOW_TEXT4显示 Text节点。 filter可选-
一个回调函数或一个具有
acceptNode()方法的对象。从根节点开始到子树中的每个节点都会调用一次该函数或方法,哪些节点需要进入迭代节点列表等待调用则取决于 whatToShow 标志。该方法需要返回下列常量之一:NodeFilter.FILTER_ACCEPT、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> |