代码如下:
<!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.
?
?
?
?
?
?
?
1 楼
flyer646
2010-11-29
页面元素 还没有载入呢,当然插入不了 你的那个a还是一个空的数组
jquery里面有个
$(document).ready(
function(){
}
);
写这里面就ok,要等页面加载元素完成才可以
jquery里面有个
$(document).ready(
function(){
}
);
写这里面就ok,要等页面加载元素完成才可以
2 楼
lixinlixin2008
2010-11-29
flyer646 写道
页面元素 还没有载入呢,当然插入不了 你的那个a还是一个空的数组
jquery里面有个
$(document).ready(
function(){
}
);
写这里面就ok,要等页面加载元素完成才可以
jquery里面有个
$(document).ready(
function(){
}
);
写这里面就ok,要等页面加载元素完成才可以
you are wrong