NodeFilter - Web API 接口参考 编辑

NodeFilter 接口表示一个对象,此对象用于过滤 NodeIteratorTreeWalker 中的节点。它既不能处理 DOM,也不能遍历节点;它只能根据提供的过滤器对单个节点进行判定。

注意:浏览器不提供任何实现该接口的对象。用户需要自己编写该对象,根据需要自行定制 acceptNode() 方法,以用于TreeWalkerNodeIterator 对象。

属性

此接口没有实现或继承任何属性。

方法

此接口不继承任何方法。

NodeFilter.acceptNode()
返回一个 unsigned short,用于表示提供的Node 是否需要被NodeIteratorTreeWalker 迭代算法所接受。这个方法应由使用 NodeFilter 的用户编写。可能的值如下:
常量描述
FILTER_ACCEPT当需要接受一个节点时,NodeFilter.acceptNode()返回该值。
FILTER_REJECT当需要拒绝一个节点时,NodeFilter.acceptNode()返回该值。对于 TreeWalker,这个节点的子节点也会被拒绝。对于 NodeIterator,这个常量的表现与FILTER_SKIP一样。
FILTER_SKIPNodeIteratorTreeWalker 对象需要跳过一个节点时,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
ObsoleteInitial 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.

参见

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

词条统计

浏览:134 次

字数:5100

最后编辑:8年前

编辑次数:0 次

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文