为何document.body.childNodes列表中会出现SCRIPT和#text节点?
问题解答
首先明确基础规则:document.body.childNodes会返回<body>标签下所有直接子节点,覆盖元素节点、文本节点(标签之间的换行、空格等空白字符会被解析为文本节点,节点名为#text)、注释节点(节点名为#comment)等所有DOM节点类型。
你提到的两个节点来源如下:
- SCRIPT节点:就是你编写的包含
window.onload逻辑的<script>元素本身。你提供的示例代码里虽然把这段script放在了</head>之前,但从实际运行结果来看,你本地真实运行的代码是把这段script标签放在了</body>闭合标签的前面(属于前端常见的书写习惯,保证JS执行时DOM已经加载完成,大概率是你整理示例代码时写错了script的位置)。 - #text节点:就是
</script>结束标签和</body>闭合标签之间的换行、空格这类空白字符,浏览器会把连续的空白字符解析为一个文本节点,对应节点名就是#text。
额外补充:你输出里demo对应的P节点之后出现的#comment节点,说明你实际代码中在<p id="demo"></p>和script标签之间还有一段HTML注释,整理示例代码时你漏写了这部分内容。
内容的提问来源于stack exchange,提问作者Johnny
相关产品推荐
相关产品推荐

