遍历某一元素下所有的文本节点

原理:所有的node都有一个nodeType属性表示节点类型,文本节点类型为3,配合递归能很方便的遍历一个节点下的所有文本节点。

 function getTextNodesDeep(elem, opt_filter){
    var textNodes = [];
    if(elem){
      let nodes = elem.childNodes, i = nodes.length;
      for(;i--;){
        let node = nodes[i],
            nodeType = node.nodeType;
        if(nodeType === 3){//文本节点
          if(!opt_filter || opt_filter(node, elem)){
            textNodes.push(node);
          }
        }else if(nodeType === 1){//元素节点
          textNodes = textNodes.concat(getTextNodesDeep(node, opt_filter))
        }
      }
    }
    return textNodes;
  }

推荐阅读更多精彩内容