代码如下:
<!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.
分享到:
相关推荐
测试代码如下: 代码如下: <button value=”abc”>测试</button> [removed] var btn = document.getElementsByTagName(‘button’)[0]; alert(...IE6/7 中返回的是innerHTML,实现错误。
我们知道获取元素的实际宽高在IE中可以使用currentStyle属性。但如果没有显示的去设置元素的宽高,那么使用该属性将获取不到,获取的值为auto。如下 代码如下: <div>abcd</div> [removed] var div = document....
代码如下: function getElementsByClassName(n) { var classElements = [],allElements = document.getElementsByTagName(‘*’); for (var i=0; i< allElements.length; i++ ) { if (allElements[i].className =...
js 获取元素下面所有的li 代码如下: var content=document.getElementById(“content”); var items=content.getElementsByTagName(“ul”); var itemss=items[2].getElementsByTagName(“li”); 或 代码如下: var ...
xml技术文档 getElementsByTagname() ,添加节点 - appendChild()
02-getElementsByTagName获取某些元素.html 03-H5新增获取元素方式(1).html 04-获取特殊元素.html 05-事件三要素.html 06-执行事件步骤.html 07-操作元素之改变元素内容.html 08-innerText和innerHTML的区别.html 09...
常见的获取元素的方法有3种,分别是通过元素ID、通过标签名字和通过类名字来获取。 getElementById DOM提供了一个名为getElementById的方法,这个方法将返回一个与之对应id属性的节点对象。使用的时候请注意区分大小...
js childnodes获取的是所有的子元素,而我们实际要获取第一级子元素。 function getChildren(obj){ var objChild = [] ; var objs = obj.getElementsByTagName('*'); for(var i=0,j=objs.length; i<j;++i){ ...
常见的获取元素的方法有3种,分别是通过元素ID、通过标签名字和通过类名字来获取。 getElementById DOM提供了一个名为getElementById的方法,这个方法将返回一个与之对应id属性的节点对象。使用的时候请注意区分大小...
1、通过标签获取元素,返回一个数组 var li = document.getElementsByTagName('li');//标签获取元素 li[0][removed];// 查看获取元素的内容 li[0][removed] = content;//修改获取到标签中的内容 2、通过id...
本文实例讲述了JS简单实现获取元素的封装操作。分享给大家供大家参考,具体如下: JS封装获取元素 js的获取元素: ID:document.getElementById(); class:document.getElementsByName()[]; Tag:document....
W3C标准推荐的语法是通过document文档对象获取DOM树内的内的某个元素,常见的方法有getElementById()、getElementsByName()、getElementsByTagName(),他们的作用分别通过id属性、name属性/标签名称返回单个...
1.获取元素 getElementById()方法,通过元素的id获取元素,接受一个参数即要获取元素的id,如果不存在这个id返回 null 注意不要让表单元素的name和别的元素的id相同,IE8以下的IE浏览器用这个方法通过元素的name属性...
02-getElementsByTagName获取某些元素.html 03-H5新增获取元素方式(1).html 04-获取特殊元素.html 05-事件三要素.html 06-执行事件步骤.html 07-操作元素之改变元素内容.html 08-innerText和innerHTML的区别.html 09...
今天,看一个国外网站发现人家获取head元素如下 复制代码代码如下:var head = document.head || document.getElementsByTagName(‘head’)[0]; 后面的是我们常用的方式,前面的 document.head 着实第一次见。查资料...
本文实例讲述了JS封装通过className获取元素的函数。分享给大家供大家参考,具体如下: <div class=star></div> <div class=star></div> <div class=app></div> <p class=star></p> <p class=ar></p> 假设...
对于js来说,我想每一个刚接触它的人都应该会抱怨:为什么没有一个通过class来获取元素的方法。尽管现在高版本的浏览器已经支持getElementsByClassName()函数,但是对于低版本浏览器来说,还是无法兼容,在脱离其他...
MySQL数据库备份/恢复工具V1.0.0 我找了一些代码改进的.单个文件实现服务器备份,下载到本机,分卷备份等.
代码如下: //CLASS@Mr.Think*****getElementsByTagName function tag(name,elem){ if(!document.getElementsByTagName) return ... } 使用不做详述,若是用于获取整个文档中某指定标签集合,可直接用tag(“xx”)获取.