为什么函数NodeValue__Two()
显示null
?对我来说,它应该显示与函数NodeValue__One()
相同的东西。
我在IE6上测试了这个。
<html>
<body>
<script language="JavaScript">
function NodeValue__One()
{
alert(myNodeOne.childNodes(0).nodeValue);//This is OK
}
function NodeValue__Two()
{
alert(document.all[6].nodeValue);//This is NOT OK
}
</script>
<p>This PARAGRAPH has two nodes,
<b id="myNodeOne">Node One Text</b>, and
<b id="myNodeTwo">Node Two Text</b>.
<input id="txt1" type="text" value="Damn!!!" />
</p>
<button onclick="NodeValue__One();">Node Value 1</button></br>
<button onclick="NodeValue__Two();">Node Value 2</button>
</body>
</html>
答案 0 :(得分:3)
All
数组是一个Elements数组。元素在nodeValue中没有值。
另一方面,childNodes
将包含Elements和TextNodes。
很难让All
的索引正确,因为All中列出的实际元素的数量可能与您在HTML中看到的不同。例如,在HTML文本中没有HEAD或TITLE元素,它们将出现在DOM中。
答案 1 :(得分:2)
这两种方法都已弃用且不安全。如果您为元素提供唯一标识符并使用getElementById
函数来查找DOM中的元素,那会更好:
var element = document.getElementById('id_of_element');
答案 2 :(得分:1)
一个原因可能是您错误地认为“此段落有两个节点”。它至少有六个,包括三个文本节点包含“This PARAGRAPH有两个节点”,“,和”和“。”。
答案 3 :(得分:0)
使用document.all[6].text
这将为您提供Node Two Text