为什么我无法访问子节点?

时间:2014-03-25 16:19:32

标签: javascript

目前正在学习javascript,我收到一条错误,说'childNodes [1]未定义',但是(id =“intro”)有两个孩子,所以为什么我不能访问第二个孩子(Hello world!)?< / p>

<!DOCTYPE html>
<html>
<body>

<p id="intro">
<h1>DOM Lesson one</h1>
<p>Hello world!</p>
</p>

<script>
try
{
var txt=document.getElementById("intro").childNodes[1].nodeValue;
document.write(txt);
}
catch(err)
{
alert(err);
}
</script>

</body>
</html>

2 个答案:

答案 0 :(得分:3)

  

但是(id =&#34; intro&#34;)有两个孩子

它没有。

  • h1元素
  • 中不能包含p元素
  • p元素的结束标记是可选的

您的标记相当于:

<p id="intro">
</p><h1>DOM Lesson one</h1>
<p>Hello world!</p>
</p>

该段落有一个子节点,一个文本节点,其中包含空格/换行。


即使不是这种情况(让try it使用div而不是段落),空格仍然会创建文本节点,因此索引1处的节点将是h1元素。


然后又出现了另一个问题,the nodeValue of an element is null

您需要获取元素的firstChild以获取其中的文本节点,然后获取nodeValue

答案 1 :(得分:0)

<p>元素不能包含<h1>元素,因此childNodes[1]实际上不存在。