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 找到一段:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>ie中getelementsbytagname无法获取元素bug</title>
</head>
<body>
<input type="button" id="test" value="test">
<script>
var html= '<input type="checkbox">';
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>
</body>
</html>