蓝森林首页 | 返回主页 | 本站地图 | 站内搜索 | 联系信箱 |
 您目前的位置:首页 > 自由软件 > 技术交流 > 应用编程


    

蓝森林 http://www.lslnet.com 2006年8月25日 8:28

这个算js的bug吗?

[html]
<a id="uu">1</a>
<a name="uu">2</a>
<script>
u=document.getElementsByName("uu");
for (i=0;i<u.length;i++){
alert(u[i].name);
}

</script>
[/html]

应该不是,看下面所述:

在下面的例子中,总共有5个标签,两个<b>,一个<li>,一个<a>,一个<button>,其中,只有<a>和<button>在HTML语法里,是有name这个attribute的,其它的,都没有,但是可以写上。可以看出,在HTML方法里,不具有name这个attribute的,即使是写上了name,也是不会取得的,就像 b2.对于没在HTML方法里没有name这个attribute的标签,如果id是document.getElementsByName(...)的参数相等,也是会被取出的,就像 b1,li3 .还有一点,需要指出,b1的name是写不是 aa,但是getElementsByName("aa")照样能把b1取出来.
[code]
<b id="aa" name="bb">b1</b>
<b name="aa">b2</b>
<li id="aa" name="cc">li3</li>
<a id="aa" onclick="alert(this.name)">a4</a>
<button name="aa" onclick="alert(this.name)">button5</button>
[/code]
[html]
<b id="aa" name="bb">b1</b>
<b name="aa">b2</b>
<li id="aa" name="cc">li3</li>
<a id="aa" onclick="alert(this.name)">a4</a>
<button name="aa" onclick="alert(this.name)">button5</button>
<script>
u=document.getElementsByName("aa");
alert("总共取出:"+u.length+" 个")
for (i=0;i<u.length;i++){
alert("第"+(i+1)+"个的name值是:" + u[i].name + "\n内容是:" +u[i].innerHTML);
}

</script>[/html]

[html]

<li id="aa" name="cc">li3</li>
<UL>
<li id="aa" name="c4444">li444</li>
</UL>
<script>
u=document.getElementsByName("aa");
alert("总共取出:"+u.length+" 个")
for (i=0;i<u.length;i++){
alert("第"+(i+1)+"个的name值是:" + u[i].name + "\n内容是:" +u[i].innerHTML);
}

</script>
[/html]

那这个算bug吗?
:)

当然是BUG,IE对ID属性处理的不严谨。换FireFox浏览器就能看出问题。

我只能这么说:对于这个getElementsByName方法,尽量不要去用,在不同的浏览器上,它的工作方式是不同的,这并不算是bug。

Sheneyan在上个帖子中说


同感,如果有人该意的去夸大其词的话,谁也没有办法,除非你能说服microsoft

如果IE7出来修正了这个问题的话,岂不是Microsoft打了自己的嘴巴。

如果有 打嘴巴子 這種想法,可能就沒有今天的微軟了。

做人要厚道。




Copyright © 1999-2000 LSLNET.COM. All rights reserved. 蓝森林网站 版权所有。 E-mail : webmaster@lslnet.com