Javascript documentElement的childNodes返回一个null

Javascript documentElement的childNodes返回一个null,javascript,Javascript,我正在为遍历执行一些简单的JS测试,我想知道为什么我的documentElement包含一个空对象 <html> <head> <title>My document</title> </head> <body> <h1>Some header</h1> <p id="pID">Some paragraph</p&

我正在为遍历执行一些简单的JS测试,我想知道为什么我的documentElement包含一个空对象

<html>
    <head>
        <title>My document</title>
    </head>
    <body>
        <h1>Some header</h1>
        <p id="pID">Some paragraph</p>
        <p name="pNAME">Another paragraph/p>
    </body>
</html>
<script type="text/javascript">
    var rootElement = document.documentElement;
    var childNodes = rootElement.childNodes;

    for (var i = 0; i < childNodes.length; i++) {
      document.write(childNodes[i].localName);
      document.write("<br>");
    }
</script>

我的文件
某个标题

某个段落

另一段/p> var rootElement=document.documentElement; var childNodes=rootElement.childNodes; 对于(var i=0;i”); }


它返回
head、null、body
。但是为什么在
根元素
中有3个
子节点

之间的新行被认为是文本(
[对象文本]
),所以它是
。localName
属性是
null

如果您尝试这样做,它应该只输出2个元素

    <html>
    <head>
        <title>My document</title>
    </head><body>
        <h1>Some header</h1>
        <p id="pID">Some paragraph</p>
        <p name="pNAME">Another paragraph</p>
    </body>
</html>

    <script type="text/javascript">
        var rootElement = document.documentElement;
        var childNodes = rootElement.childNodes;

        for (var i = 0; i < childNodes.length; i++) {
          document.write(childNodes[i].localName);
          document.write("<br>");
        }
    </script>

我的文件
某个标题

某个段落

另一段

var rootElement=document.documentElement; var childNodes=rootElement.childNodes; 对于(var i=0;i”); }
如果只列出对象而不是它们的
localName
,您将看到:

[object HTMLHeadElement]
[object Text]
[object HTMLBodyElement]
因此,您将收到文本节点的
localName
null
。要解决此问题,您需要
子节点
,而不是
子节点

<script type="text/javascript">
    var rootElement = document.documentElement;
    var childNodes = rootElement.children;

    for (var i = 0; i < childNodes.length; i++) {
      document.write(childNodes[i]);
      document.write("<br>");
    }
</script>

var rootElement=document.documentElement;
var childNodes=rootElement.children;
对于(var i=0;i”);
}

这里是演示。

文档。write
重写DOM,因此我不希望您的代码有任何有意义的内容。在
之间有一些空格字符,文本节点可能没有本地名称。请尝试使用
childNodes[i].nodeName
。也许您指的是
.children()
,它返回元素而不是所有节点。