Document:createNodeIterator() 方法
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
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
。参见示例。
返回值
一个新的 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);
}
规范
Specification |
---|
DOM Standard # dom-document-createnodeiterator |
浏览器兼容性
BCD tables only load in the browser