document.all["line"].length的问题(感觉是javascript的bug)
为什么同样的页面:
document.all[ "line "].length=undefine
而
document.getElementsByName( "line ").length=1
line相关的source如下:
<TR class= "trNormal " id= "line " onclick= "bgColorChange(0) ">
<TD> 1 </TD>
<TD> 2 </TD>
</TR>
------------------------------------------------
还有另外一种更奇怪的现象:
当line相关的source为如下时,document.all[ "line "].length=undefine
line相关的source如下:(只有一个line对象)
<TR class= "trNormal " id= "line " onclick= "bgColorChange(0) ">
<TD > 1 </TD>
<TD > 2 </TD>
</TR>
**************
而当line相关的source为如下时,document.all[ "line "].length=3
line相关的source如下:(只有三个line对象)
<TR class= "trNormal " id= "line " onclick= "bgColorChange(0) ">
<TD > 1 </TD>
<TD > 2 </TD>
</TR>
<TR class= "trNormal " id= "line " onclick= "bgColorChange(1) ">
<TD > 1 </TD>
<TD > 2 </TD>
</TR>
<TR class= "trNormal " id= "line " onclick= "bgColorChange(2) ">
<TD > 1 </TD>
<TD > 2 </TD>
</TR>
——————----------------------------------------------
可能有人看啦会认为还有其他source不一样。
但我很确信的说除拉以上说明不一样的地方,其他source全部一样
因为我是用windiff文件比较工具对比过的,对两个html源文件进行比较的
------解决方案--------------------document.all( "line ").length
------解决方案--------------------document.getElementsByName( "line ")
返回的是 对象的集合,length=1代表集合里有一个对象
document.all.line.length
document.all( "line ").length
返回的是对象所包含元素的集合
------解决方案--------------------document.getElementsByName( "line ")
返回你定义line的数据集合
------解决方案--------------------向上 学习
------解决方案--------------------因为document.all[ 'line '],在ie中的理解是如果只有一个名字为line的对象,就返回这个对象,如果有多个的话,返回的是一个集合
而document.getElementsByName( 'line '),不管有几个名字为line的对象,都是返回一个集合