NodeIterator - 表示在 DOM 子树中节点列表成员的迭代器
NodeIterator
接口表示在 DOM 子树中节点列表成员的迭代器。节点将按文档顺序返回。
NodeIterator接口表示DOM子树中节点列表成员的迭代器。节点将按文档顺序返回。
可以使用 Document.createNodeIterator()
方法创建一个 NodeIterator,如下所示:
var nodeIterator = document.createNodeIterator(root, whatToShow, filter);
属性
该接口不继承任何属性。
NodeIterator.root
只读
返回一个 Node
,代表创建 NodeIterator
时指定的根节点。
NodeIterator.whatToShow
只读
返回一个 unsigned long
,它是由常量组成的位掩码,该常量描述了必须包含的 Node
类型。不匹配的节点将被跳过,但如果相关,则可包括其子节点。可能的值为:
常量 | 数字值 | 描述 |
---|---|---|
NodeFilter.SHOW_ALL |
-1 (unsigned long 的最大值) |
包含所有节点。 |
NodeFilter.SHOW_ATTRIBUTE |
2 |
包含属性 Attr 节点。仅当创建一个以 Attr 节点为根的 NodeIterator 时,这才有意义。在这种情况下,这意味着属性节点将出现在迭代或遍历的第一个位置。由于属性决不是其他节点的子级,因此在文档树上遍历时它们不会出现。 |
NodeFilter.SHOW_CDATA_SECTION |
8 |
包含 CDATASection 节点。 |
NodeFilter.SHOW_COMMENT |
128 |
包含 Comment 节点。 |
NodeFilter.SHOW_DOCUMENT |
256 |
包含 Document 节点。 |
NodeFilter.SHOW_DOCUMENT_FRAGMENT |
1024 |
Shows DocumentFragment 节点。 |
NodeFilter.SHOW_DOCUMENT_TYPE |
512 |
包含 DocumentType 节点。 |
NodeFilter.SHOW_ELEMENT |
1 |
包含 Element 节点。 |
NodeFilter.SHOW_ENTITY |
32 |
包含 Entity 节点。仅当创建一个 Entity 节点为根的 NodeIterator 时,这才有意义。在这种情况下,这意味着 Entity 节点将出现在遍历的第一个位置。由于实体不是文档树的一部分,所以在文档树上遍历时它们不会出现。 |
NodeFilter.SHOW_ENTITY_REFERENCE |
16 |
包含 EntityReference 节点。 |
NodeFilter.SHOW_NOTATION |
2048 |
包含 Notation 节点。仅当创建一个以 Notation } 节点为根的 NodeIterator 时,这才有意义。在这种情况下,这意味着 Notation 节点将出现在遍历的第一个位置。由于实体不是文档树的一部分,所以在文档树上遍历时它们不会出现。 |
NodeFilter.SHOW_PROCESSING_INSTRUCTION |
64 |
包含 ProcessingInstruction 节点。 |
NodeFilter.SHOW_TEXT |
4 |
包含 Text 节点。 |
NodeIterator.filter
只读
返回用于选择相关节点的 NodeFilter
。
NodeIterator.expandEntityReferences
只读
一个 Boolean
,指示在丢弃 EntityReference
时是否必须同时丢弃其整个子树。
NodeIterator.referenceNode
只读
返回迭代器锚定的 Node
。
NodeIterator.pointerBeforeReferenceNode
只读
返回一个 Boolean
标志,指示 NodeIterator
是锚定在锚点之前(标志为 true
),还是锚点之后(标志为 false
)。
方法
该接口不继承任何方法。
NodeIterator.detach()
此操作是空操作。它什么也没做。以前它是告诉引擎不再使用 NodeIterator
,但是现在已经没有用了。
NodeIterator.previousNode()
返回文档中的上一个 Node
,如果没有则返回 null
。
NodeIterator.nextNode()
返回文档中的下一个 Node
,如果没有则返回 null
。
规范
规范 | 状态 | 备注 |
---|---|---|
DOM NodeIterator 的定义 |
现行的标准 | 添加了 referenceNode 和 pointerBeforeReferenceNode 属性。移除了 expandEntityReferences 属性。方法 detach() 已更改为无任何操作。方法 previousNode() 和 nextNode() 不再引发异常。 |
Document Object Model (DOM) Level 2 Traversal and Range Specification NodeIterator 的定义 |
已过时 | 初始定义。 |
桌面浏览器兼容性
特性 | Chrome | Edge | Firefox | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
feature_basicsupport | 1 | 支持 | 3.5 | 9 | 9 | 3 |
detach | 1 | 12 | 3.5 — 22 | 9 | 9 | 3 |
expandEntityReferences | 1 | 12 | 3.5 — 21 | 9 | 9 | 3 |
filter | 1 | 12 | 3.5 | 9 | 9 | 3 |
nextNode | 1 | 12 | 3.5 | 9 | 9 | 3 |
pointerBeforeReferenceNode | 1 | 17 | 3.5 | 不支持 | 支持 | 3 |
previousNode | 1 | 12 | 3.5 | 9 | 9 | 3 |
referenceNode | 1 | 17 | 3.5 | 不支持 | 支持 | 3 |
root | 1 | 12 | 3.5 | 9 | 9 | 3 |
whatToShow | 1 | 12 | 3.5 | 9 | 9 | 3 |
移动浏览器兼容性
特性 | Android | Chrome for Android | Edge mobile | Firefox for Android | IE mobile | Opera Android | iOS Safari |
---|---|---|---|---|---|---|---|
feature_basicsupport | 支持 | 支持 | 未知 | 4 | 未知 | 10.1 | 3 |
detach | 支持 | 支持 | 未知 | 4 — 22 | 未知 | 10.1 | 3 |
expandEntityReferences | 支持 | 支持 | 未知 | 4 — 21 | 未知 | 10.1 | 3 |
filter | 支持 | 支持 | 未知 | 4 | 未知 | 10.1 | 3 |
nextNode | 支持 | 支持 | 未知 | 4 | 未知 | 10.1 | 3 |
pointerBeforeReferenceNode | 支持 | 支持 | 未知 | 4 | 未知 | 支持 | 3 |
previousNode | 支持 | 支持 | 未知 | 4 | 未知 | 10.1 | 3 |
referenceNode | 支持 | 支持 | 未知 | 4 | 未知 | 支持 | 3 |
root | 支持 | 支持 | 未知 | 4 | 未知 | 10.1 | 3 |
whatToShow | 支持 | 支持 | 未知 | 4 | 未知 | 10.1 | 3 |
相关链接
- 创建方法:
Document.createNodeIterator()
. - 相关接口:
NodeFilter
,TreeWalker
。