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

<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('*');
阅读 3.4k
3 个回答

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

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

遍历的结果都是1

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

返回所有文本

判断nodeType即可

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

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题