代码如下:
<!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.
分享到:
相关推荐
然而,在IE6和IE7中,获取`<button>`元素的`value`属性存在一个显著的bug。 考虑以下测试代码: ```html 测试 var btn = document.getElementsByTagName('button')[0]; alert(btn.value); alert(btn.getAttribute...
IE浏览器中href属性存在BUG问题是前端开发中遇到的一个典型兼容性问题,尤其在较老版本的IE浏览器中,如IE6、IE7中较为常见。这一问题不仅会影响页面的正常显示,还可能导致JavaScript脚本中获取到错误的href属性值...
这种行为导致在IE浏览器中利用getElementsByName进行DOM查询时,可能无法找到预期的元素,从而引起一些bug。 ### 解决方案 针对上述提到的问题,文档中提供了一种解决方案,即通过自定义函数`GetElementsByName`来...
需要注意的是,在IE6中,如果给定的ID与某个元素的`name`属性匹配,则IE6会返回该元素,这是一个已知的bug。 ### 总结 通过以上内容的学习,我们了解了DOM的基础概念以及常用的DOM操作方法。DOM提供了强大的功能来...
在IE6到IE9这些较老的Internet Explorer浏览器中,存在一些与DOM操作相关的兼容性问题,特别是针对`<tbody>`元素的`innerHTML`属性。`innerHTML`属性通常用于动态地设置或获取HTML元素内部的HTML内容。但在IE6-IE9中...
这个问题在其他现代浏览器中通常不会出现,但在IE6中却是一个常见的bug。本文将详细介绍一种解决此问题的方法,并提供相关的技术背景和注意事项。 首先,理解这个问题的根源是关键。在IE6中,`select`元素被赋予了...
第一个问题是fixed的tr在ie7中不能进行定位,而且td在定位后并不能保持在表格中的布局,这样在原表格插tr就没意义了。 ps:fixed的相关应用可参考仿LightBox效果。 最后我用的方法是新建一个table,并把源tr克隆到...
例如,`document.getElementsByTagName` 方法可以用来获取指定标签名的元素集合。对于XML的更深入操作,可以使用DOM提供的其他方法,如 `document.createElement`, `document.createTextNode`, `element.appendChild...