JavaScript-DOM节点值问题

JavaScript-DOM节点值问题,javascript,Javascript,为什么函数NodeValue\uu Two()显示null?对我来说,它应该显示与函数NodeValue\uuu One()相同的内容 我已经在IE6上测试过了 <html> <body> <script language="JavaScript"> function NodeValue__One() { alert(myNodeOne.childNodes(0).nodeValue);//This is OK } function NodeV

为什么函数
NodeValue\uu Two()
显示
null
?对我来说,它应该显示与函数
NodeValue\uuu 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>

函数NodeValue\uuuu One()
{
警报(myNodeOne.childNodes(0.nodeValue);//这是正常的
}
函数NodeValue\uuuu Two()
{
警报(document.all[6].nodeValue);//这不正常
}
这一段有两个节点,
节点1文本,以及
节点2文本。

节点值1
节点值2
一个原因可能是您错误地假设“此段落有两个节点”。它至少有六个文本节点,包括包含“此段落有两个节点”、“和”的三个文本节点。

一个原因可能是您错误地假设“此段落有两个节点”。它至少有六个文本节点,包括三个文本节点,其中包含“此段落有两个节点”、“和”。

数组是一个元素数组。元素在nodeValue中没有值

另一方面,
childNodes
将同时包含元素和文本节点


很难获得正确的
All
索引,因为All中列出的实际元素数量可能与您在HTML中看到的不同。例如,如果HTML文本中没有HEAD或TITLE元素,则它们将出现在DOM中。

All数组是一个元素数组。元素在nodeValue中没有值

另一方面,
childNodes
将同时包含元素和文本节点


很难获得正确的
All
索引,因为All中列出的实际元素数量可能与您在HTML中看到的不同。例如,如果HTML文本中没有HEAD或TITLE元素,它们将出现在DOM中。

这两种方法都不推荐使用,而且不安全。如果为元素提供唯一标识符,并使用
getElementById
函数在DOM中查找元素,则会更好:

var element = document.getElementById('id_of_element');

这两种方法都已弃用,不安全。如果为元素提供唯一标识符,并使用
getElementById
函数在DOM中查找元素,则会更好:

var element = document.getElementById('id_of_element');

使用
document.all[6]。text
这将为您提供
Node两个文本

使用
document.all[6]。text
这将为您提供
Node两个文本

使用
document.getElementById(“myNodeOne”)
而不仅仅是
myNodeOne
childnode(0)
是VBScript语法,它只在IE中起作用,之所以存在,是因为微软在20世纪90年代故意将其作为一种不兼容性引入IE。改为使用JavaScript语法
childNodes[0]
。最好使用
document.getElementById(“myNodeOne”)
而不仅仅是
myNodeOne
childNodes(0)
是VBScript语法,它只在IE中起作用,只是因为微软在20世纪90年代有意引入它作为一种不兼容。改为使用JavaScript语法
childNodes[0]
。不,All根本不包含文本节点。好的一点,我被这句话蒙蔽了双眼,认为这完全不相关。不,All根本不包含文本节点。好的一点,我被这句话蒙蔽了双眼,认为这完全不相关。