childNode属性的返回值问题?

代码如下:
<body>

 <div id="d1">
     <p>123</p>
     <h1>123</h1>
 </div>
 <script>
     var div = document.getElementById("d1").childNodes.length;
     for(var i=0;i<div;i++){
         document.writeln(document.getElementById("d1").childNodes[i]);
     }
     alert(div);

 </script>

</body>

然后执行后的输出是:
[object Text]
[object HTMLParagraphElement]
[object Text]
[object HTMLHeadingElement]
[object Text]
不是很懂为什么有三个text对象?
关于childNodes属性的描述是:返回元素子节点的 NodeList。这个返回的节点包括元素节点和文本节点吗?

阅读 3.9k
3 个回答

标签之间的空格是textNode类型的node节点,可以去看一下js高级教程中DOM这一章

新手上路,请多包涵

childNodes 返回值是一个数组, 返回的内容包括元素节点,文本节点,空白节点, 你示例中每个标签是换行的,换行就是一个空白节点。 你若要只取元素节点,可以用nodeType(元素nodeType为 1) 去判断。

<div id="d1"><p>123</p><h1>123</h1></div><!--因为你这里有换行,所以默认会有一个text,当你把换行和空格删除完就没有了-->
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题