`
zhouyrt
  • 浏览: 1162188 次
  • 性别: 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,要等页面加载元素完成才可以

相关推荐

    IE6、IE7中获取Button元素的值的bug说明

    然而,在IE6和IE7中,获取`&lt;button&gt;`元素的`value`属性存在一个显著的bug。 考虑以下测试代码: ```html 测试 var btn = document.getElementsByTagName('button')[0]; alert(btn.value); alert(btn.getAttribute...

    IE下href 的 BUG问题

    IE浏览器中href属性存在BUG问题是前端开发中遇到的一个典型兼容性问题,尤其在较老版本的IE浏览器中,如IE6、IE7中较为常见。这一问题不仅会影响页面的正常显示,还可能导致JavaScript脚本中获取到错误的href属性值...

    innerHTML 和 getElementsByName 在IE下面的bug 的解决

    这种行为导致在IE浏览器中利用getElementsByName进行DOM查询时,可能无法找到预期的元素,从而引起一些bug。 ### 解决方案 针对上述提到的问题,文档中提供了一种解决方案,即通过自定义函数`GetElementsByName`来...

    比较详细的javascript DOM 学习笔记第1 2页.docx

    需要注意的是,在IE6中,如果给定的ID与某个元素的`name`属性匹配,则IE6会返回该元素,这是一个已知的bug。 ### 总结 通过以上内容的学习,我们了解了DOM的基础概念以及常用的DOM操作方法。DOM提供了强大的功能来...

    IE6-IE9中tbody的innerHTML不能赋值的解决方法

    在IE6到IE9这些较老的Internet Explorer浏览器中,存在一些与DOM操作相关的兼容性问题,特别是针对`&lt;tbody&gt;`元素的`innerHTML`属性。`innerHTML`属性通常用于动态地设置或获取HTML元素内部的HTML内容。但在IE6-IE9中...

    IE6下div层被select控件遮住的问题解决方法

    这个问题在其他现代浏览器中通常不会出现,但在IE6中却是一个常见的bug。本文将详细介绍一种解决此问题的方法,并提供相关的技术背景和注意事项。 首先,理解这个问题的根源是关键。在IE6中,`select`元素被赋予了...

    JavaScript Table行定位效果

    第一个问题是fixed的tr在ie7中不能进行定位,而且td在定位后并不能保持在表格中的布局,这样在原表格插tr就没意义了。 ps:fixed的相关应用可参考仿LightBox效果。 最后我用的方法是新建一个table,并把源tr克隆到...

    异步调用webservice返回responseXML为空的问题解决方法

    例如,`document.getElementsByTagName` 方法可以用来获取指定标签名的元素集合。对于XML的更深入操作,可以使用DOM提供的其他方法,如 `document.createElement`, `document.createTextNode`, `element.appendChild...

Global site tag (gtag.js) - Google Analytics