JavaScript - DOM nodeValue问题

时间:2009-11-13 09:15:45

标签: javascript

为什么函数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>

4 个答案:

答案 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