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。