为什么childNodes计数大于预期?

时间:2017-10-11 14:26:56

标签: javascript dom

我对DOM有疑问。考虑以下javascript代码,输出将为5.

<body>
    <p>Hello</p>
<script>
    function countBody() {
        var childs = document.getElementsByTagName("body")[0].childNodes;
        alert(childs.length);
    }
    window.onload = countBody;
</script>
</body>

由于我有两个元素节点和两个文本节点,第五个节点是什么?

2 个答案:

答案 0 :(得分:4)

您有三个文本节点。

  • 在body start标记和段落之间。
  • 在段落和脚本之间。
  • 在脚本和正文结束标记之间

...您可以遍历childNodesconsole.log()每个值来查看。

答案 1 :(得分:0)

请亲自检查一下:

&#13;
&#13;
<body>
  <p>Hello</p>
  <script>
      function countBody() {
          var childs = document.getElementsByTagName("body")[0].childNodes;
          console.log([].map.call(childs, function (node) { return node.textContent; }));
      }
      window.onload = countBody;
  </script>
</body>
&#13;
&#13;
&#13;

您计算中错过了一个文本节点。请注意,代码段的输出与您提供的代码不同。