怎样遍历当前节点的所有后代节点

1. Node.prototype.hasChildNodes();

2. Node.prototype.firstChilds();

3. Node.prototype.nextSibling();

function DOMComb(parent, callback) {
  if (parent.hasChildNodes()) {
    for (var node = parent.firstChild; node; node = node.nextSibling) {
      DOMComb(node, callback);
    }
  }
  callback(parent);
}

// 用法
DOMComb(document.body, console.log)

这里需要注意for循环的写法, 它的作用是循环所有子节点, 对每个字节点都使用DOMComb()函数. 第一个参数表示从第一个子节点开始遍历, 第二个参数表示这个节点不能为空(null / undefined等) , 第三个参数表示将下一个子节点赋值个node. 这种写法不常见, 但挺巧妙的.

原文地址:https://www.cnblogs.com/aisowe/p/11508818.html