目前正在学习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>
答案 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]
实际上不存在。