【www.gdgbn.com--js教程】

ie中js getelementsbytagname无法获取元素bug

定义和用法
getelementsbytagname() 方法可返回带有指定标签名的对象的集合。

语法
document.getelementsbytagname(tagname)说明
getelementsbytagname() 方法返回元素的顺序是它们在文档中的顺序。

如果把特殊字符串 "*" 传递给 getelementsbytagname() 方法,它将返回文档中所有元素的列表,元素排列的顺序就是它们在文档中的顺序。
提示和注释
注释:传递给 getelementsbytagname() 方法的字符串可以不区分大小写。

更多详细内容请查看:http://www.111cn.net/wy/js-ajax/getelementsbytagname.htm


点击input[id=test]

ie6/7 : 抛异常

ie8/9 : 弹出 undefined

firefox/safari/chrome/opera :弹出 [object htmlinputelement]

当把 语句1 和 语句2 位置调换,则不重现。

当把 div.getelementsbytagname 换成 div.childnodes[0] 或 div.children[0] 时,亦不重现。

初步判断是ie中 getelementsbytagname 的实现问题,在 msdn 找到一段:




   
    ie中getelementsbytagname无法获取元素bug



<script>
 var html= "";
 var div = document.createelement("div");
 div.innerhtml = html;
 
 var a = div.getelementsbytagname("input"); // 语句1
 document.body.appendchild(div); // 语句2
 
 document.getelementbyid("test").onclick = function() {
  alert(a[0]);
 };
</script>

本文来源:http://www.gdgbn.com/wangyezhizuo/29637/