MDN’s new design is in Beta! A sneak peek: https://blog.mozilla.org/opendesign/mdns-new-design-beta/

NodeFilter.acceptNode()

NodeFilter.acceptNode() 方法会返回一个无符号短整型,用于表明给出的 Node 是否要被 NodeIterator 或 TreeWalker 的迭代算法所接受。该方法应由 NodeFilter 的使用者重写。可返回的值有:

Constant Description
NodeFilter.FILTER_ACCEPT 当一个节点应被接受时由 NodeFilter.acceptNode() 返回。
NodeFilter.FILTER_REJECT 当一个节点应被拒绝时由 NodeFilter.acceptNode() 返回 。被拒绝访问节点的子节点无法通过NodeIteratorTreeWalker 对象访问。该值可认为是“越过该节点及其子节点” 。
NodeFilter.FILTER_SKIP 当一个节点应被 NodeIteratorTreeWalker 对象越过时由 NodeFilter.acceptNode() 返回 。其子节点依然可被访问到。该值可认为是“越过该节点但不包括其子节点”。

该函数如需要TreeWalker访问节点则需返回 NodeFilter.FILTER_ACCEPT,如果需要忽略节点及其子节点则需返回NodeFilter.FILTER_REJECT,除此之外还可以返回 NodeFilter.FILTER_SKIP。

浏览器没有提供该方法的对象实现。如果用户需要,应实现一个包含acceptNode()方法的对象,用于 TreeWalker 或 NodeIterator 对象使用。

Syntax

result = nodeFilter.acceptNode(node)

Parameters

node
一个将被过滤器检查的 Node 对象。

Example

var nodeIterator = document.createNodeIterator(
  // 作为搜索起点的根节点
  document.getElementById('someId'),

  // 只需要文本节点
  NodeFilter.SHOW_TEXT,

  // 一个包含用于NodeFilter的accpetNode方法的对象
    { acceptNode: function(node) {
      // 一段用于判明是否需要解释、拒绝或越过节点的逻辑
      // 在本例中,仅需要接受不包含空白内容的节点
      if ( ! /^\s*$/.test(node.data) ) {
        return NodeFilter.FILTER_ACCEPT;
      }
    }
  },
  false
);

// Show the content of every non-empty text node that is a child of root
var node;

while ((node = iterator.nextNode())) {
  alert(node.data);
}

Specifications

Specification Status Comment
DOM
NodeFilter.acceptNode()
Living Standard No change from Document Object Model (DOM) Level 2 Traversal and Range Specification
Document Object Model (DOM) Level 2 Traversal and Range Specification
NodeFilter.acceptNode()
Recommendation Initial definition.

Browser compatibility

Feature Chrome Edge Firefox (Gecko) Internet Explorer Opera Safari
Basic support 1.0 (Yes) 2.0 (1.8.1) 9.0 9.0 3.0
Feature Android Edge Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Basic support (Yes) (Yes) 1.0 (1.8.1) (Yes) 9.0 3.0

See also

 

文档标签和贡献者

 此页面的贡献者: EleanorMao
 最后编辑者: EleanorMao,