NodeFilter - Web API 接口参考 编辑
NodeFilter
接口表示一个对象,此对象用于过滤 NodeIterator
或 TreeWalker
中的节点。它既不能处理 DOM,也不能遍历节点;它只能根据提供的过滤器对单个节点进行判定。
注意:浏览器不提供任何实现该接口的对象。用户需要自己编写该对象,根据需要自行定制 acceptNode()
方法,以用于TreeWalker
或 NodeIterator
对象。
属性
此接口没有实现或继承任何属性。
方法
此接口不继承任何方法。
NodeFilter.acceptNode()
- 返回一个
unsigned short
,用于表示提供的Node
是否需要被NodeIterator
或TreeWalker
迭代算法所接受。这个方法应由使用NodeFilter
的用户编写。可能的值如下:常量 描述 FILTER_ACCEPT
当需要接受一个节点时, NodeFilter.acceptNode()
返回该值。FILTER_REJECT
当需要拒绝一个节点时, NodeFilter.acceptNode()
返回该值。对于TreeWalker
,这个节点的子节点也会被拒绝。对于NodeIterator
,这个常量的表现与FILTER_SKIP
一样。FILTER_SKIP
当 NodeIterator
或TreeWalker
对象需要跳过一个节点时,NodeFilter.acceptNode()
返回该值。但被跳过节点的子节点仍会被考虑,意即“跳过该节点但不包括其子节点”。
示例
var nodeIterator = document.createNodeIterator(
// 用作根节点的节点
document.getElementById('someId'),
// 只筛选文本节点(即节点类型3)
NodeFilter.SHOW_TEXT,
// 用作 NodeFilter 的对象,其中包含 acceptNode 方法
{ acceptNode: function(node) {
// 接受、拒绝或跳过的逻辑
// 下述例子只接受除了空格以外的内容
if ( ! /^\s*$/.test(node.data) ) {
return NodeFilter.FILTER_ACCEPT;
}
}
},
false
);
// 显示根节点下每个非空的文本节点
var node;
while ((node = nodeIterator.nextNode())) {
alert(node.data);
}
规范
规范 | 状态 | 备注 |
---|---|---|
DOM NodeFilter | Living Standard | |
Document Object Model (DOM) Level 2 Traversal and Range Specification NodeFilter | Obsolete | Initial definition. |
浏览器兼容性
BCD tables only load in the browser
The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.参见
- 相关接口:
TreeWalker
、NodeIterator
。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论