Javascript documentElement的childNodes返回一个null
我正在为遍历执行一些简单的JS测试,我想知道为什么我的documentElement包含一个空对象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&
<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()
,它返回元素而不是所有节点。