原理:所有的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;
}
网友评论