为什么搜索不到DOM树中的文本节点?

愚一笔记
  • 132
<html>
<head>
    <meta charset="utf-8">
    <title>测试能够找到内容</title>
</head>
<body>
    132****5698
    <div>
        <div>姓名</div>
        <div>学校</div>
    </div>
    <div>
        <p>132****5698</p>
    </div>
    <div>
        <span>010-15*2452</span>
    </div>
</body>
</html>

这段代码的DOM树是这样子么?
DOM

当我这样子查询的时候应该查询到的只是DOM树中的所有元素节点,但是我想查询到DOM树中的所有文本节点应该什么解决办法呢?

var body = document.getElementsByTagName('body');
var bodyChildren = body[0].getElementsByTagName('*');
回复
阅读 2.8k
3 个回答
这是上帝的杰作
  • 2.2k
✓ 已被采纳

getElementsByTagName() 方法返回一个实时的包含具有给出标签名的元素们的HTMLCollection。就意味着getElementsByTagName捕获不了Text节点,你可以用

for(var i = 0;i<bodyChildren.length;i++){
    console.log(bodyChildren[i].nodeType)
}

遍历的结果都是1

document.getElementsByTagName('body')[0].innerText

返回所有文本

新しい世界
  • 1.5k

getElementsByTagName
Elements!
Elements!!
Elements!!!
这个方法只返回元素节点!

要返回所有节点请使用 childNodes 属性, 再从中筛选出文本节点

宣传栏