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根本不包含文本节点。好的一点,我被这句话蒙蔽了双眼,认为这完全不相关。