怎样创建一个子节点遍历器

使用: document.createNodeIterator(); 通过传入一个根节点, 返回这个根节点的子节点遍历器, 然后通过其方法: nextNode() 和 previousNode() 遍历其子节点;

var nodeIterator = document.createNodeIterator(
  document.body,
  NodeFilter.SHOW_ELEMENT
);

其中, 第二个参数表示生成的子节点遍历器的类型, 因为节点有七种类型, 除开几个不能作为子节点的节点, 这个参数可以是: 

1. 所有节点: NodeFilter.SHOW_ALL

2. 元素节点: NodeFilter.SHOW_ELEMENT

3. 文本节点: NodeFilter.SHOW_TEXT

4. 注释节点: NodeFilter.SHOW_COMMENT

下面是具体的遍历写法: 

var nodeIterator = document.createNodeIterator(document.body);
var pars = [];
var currentNode;

while (currentNode = nodeIterator.nextNode()) {
  pars.push(currentNode);
}
var nodeIterator = document.createNodeIterator(
  document.body,
  NodeFilter.SHOW_ELEMENT
);

var currentNode = nodeIterator.nextNode();
var previousNode = nodeIterator.previousNode();

currentNode === previousNode // true