`
zhouyrt
  • 浏览: 1125831 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

IE中getElementsByTagName无法获取元素BUG

    博客分类:
  • BUG
阅读更多

代码如下:

<!DOCTYPE HTML>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
</head>
<body>

<div id="test">test</div>

</body>

<script>
var html= '<input type="checkbox" checked="checked">';
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>
</html>

 

 

点击div[id=test],

IE6/7/8/9中弹出 undefined

Firefox/Safari/Chrome/Opera弹出 [object HTMLInputElement]

 

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

 

当把 div.getElementsByTagName 换成 div.childNodes[0]div.children[0] 时,亦不重现。

 

初步判断是IE中 getElementsByTagName 的实现问题,在 MSDN 找到一段:

 

MSDN 写道
This problem occurs because the GetElementsByTagName method returns an XmlNodeList collection that registers listeners on the NodeInserted and the NodeRemoved events. For example, when you call the GetElementsByTagName method ten times, the NodeInserted and the NodeRemoved events have ten listeners. Therefore, when you call the GetElementsByTagName method multiple times, the process of inserting and removing nodes is delayed.

 

 

 

 

 

 

 

2
1
分享到:
评论
2 楼 lixinlixin2008 2010-11-29  
flyer646 写道
页面元素 还没有载入呢,当然插入不了  你的那个a还是一个空的数组
jquery里面有个
$(document).ready(
function(){

}
);
写这里面就ok,要等页面加载元素完成才可以


you are wrong
1 楼 flyer646 2010-11-29  
页面元素 还没有载入呢,当然插入不了  你的那个a还是一个空的数组
jquery里面有个
$(document).ready(
function(){

}
);
写这里面就ok,要等页面加载元素完成才可以

相关推荐

Global site tag (gtag.js) - Google Analytics