我需要在这个问题中找到特定节点下的所有文本节点。我可以像这样做:
function textNodesUnder(root){
var textNodes = [];
addTextNodes(root);
[].forEach.call(root.querySelectorAll('*'),addTextNodes);
return textNodes;
function addTextNodes(el){
textNodes = textNodes.concat(
[].filter.call(el.childNodes,function(k){
return k.nodeType==Node.TEXT_NODE;
})
);
}
}
然而,在XPath的帮助下,只需查询.//text()
就可以完成这项工作,因此这种方法似乎不太优雅。
在支持IE9+、Safari5+、Chrome19+、Firefox12+和Opera11+的浏览器中,获取特定元素下的所有文本节点的最简单方法是什么?
“最简单”的定义不严格,意思是“高效且简短,但不要过度压缩代码”。