首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

IE中getElementsByTagName没法获取元素BUG

2012-11-04 
IE中getElementsByTagName无法获取元素BUG代码如下:!DOCTYPE HTMLhtmlheadmeta http-equivConten

IE中getElementsByTagName无法获取元素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"); // 语句1document.body.appendChild(div); // 语句2document.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.

?

?

?

?

?

?

?

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

}
);
写这里面就ok,要等页面加载元素完成才可以 2 楼 lixinlixin2008 2010-11-29   flyer646 写道页面元素 还没有载入呢,当然插入不了  你的那个a还是一个空的数组
jquery里面有个
$(document).ready(
function(){

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

you are wrong

热点排行