我想从使用
获得的元素列表中收集所有文本 var elements =document.body.getElementsByTagName("*");
到目前为止我做了什么:
var text = '';
for (var i = 0; i < elements.length; i++) {
text = text + ' ' + elements[i].innerText
}
这将返回重复的文本,因为它获取每个元素及其子元素的自己的文本。我想知道是否有办法使用纯javasript获取元素的自己的文本?
答案 0 :(得分:0)
我认为问题是特定标签的嵌套匹配元素被计算两次。解决方案是检查我们是否已经访问了父元素,并且如果是这种情况则跳过子元素。
var text = '';
var visited = [];
for (var i = 0; i < elements.length; i++) {
var found = false;
for (var e = elements[i]; e != null; e = e.parentNode) {
if (visited.indexOf(e) > -1) {
found = true;
break;
}
}
if (!found) {
text = text + ' ' + elements[i].innerText;
visited.push(elements[i]);
}
}