ie中js getElementsByTagName无法获取元素BUG

ie中js getelementsbytagname无法获取元素bug

定义和用法
getelementsbytagname() 方法可返回带有指定标签名的对象的集合。

语法
document.getelementsbytagname(tagname)说明
getelementsbytagname() 方法返回元素的顺序是它们在文档中的顺序。

如果把特殊字符串 "*" 传递给 getelementsbytagname() 方法,它将返回文档中所有元素的列表,元素排列的顺序就是它们在文档中的顺序。
提示和注释
注释:传递给 getelementsbytagname() 方法的字符串可以不区分大小写。

更多详细内容请查看:http://www.111cn.net/wy/js-ajax/getelementsbytagname.htm

点击input[id=test]

ie6/7 : 抛异常

ie8/9 : 弹出 undefined

firefox/safari/chrome/opera :弹出 [object htmlinputelement]

当把 语句1 和 语句2 位置调换,则不重现。

当把 div.getelementsbytagname 换成 div.childnodes[0] 或 div.children[0] 时,亦不重现。

初步判断是ie中 getelementsbytagname 的实现问题,在 msdn 找到一段:

<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <title>ie中getelementsbytagname无法获取元素bug</title>
</head>
<body>
<input type="button" id="test" value="test">
<script>
 var html= '<input type="checkbox">';
 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>
</body>
</html>

时间: 2024-10-15 01:10:38

ie中js getElementsByTagName无法获取元素BUG的相关文章

js 通过class获取元素实例小结

今天看百度-web前端开发工程师-笔试题,发现了一个自己长久以来忽视的问题. 曾经有同事用我写的代码去取元素,结果没取到.原因的话,我相信是因为她写的类名中有"-",这个在正则中会被当作元字符来处理.所以代码可以像那个前端所写的那样:  代码如下 复制代码  var Tea = (function(){     function getElementsByClassName(className,tag,parent){         //".all" 是 DHTM

js中利用tagname和id获取元素的方法_javascript技巧

本文分享了js中利用tagname和id获取元素的3种方法,供大家参考,具体内容如下 方法一:整体法,先获取所有的元素,再通过ai+-b的方法来算出需要的元素 方法二:数组法,在全局环境下建立空数组,遇到需要循环的结构时,在循环中获取元素,并放入数组 方法三:函数法,遇到相同的几组元素时,只操作一组元素,并用函数传参来实现所有的效果 具体代码如下 <!DOCTYPE html> <html lang="en"> <head> <meta cha

Ajax中通过JS代码自动获取表单元素值的示例代码_AJAX相关

我们在使用Ajax的时候,通常需要获取表单元素值,然后发送给后台的服务器端程序处理.如果表单元素不多的情况我们常常会通过GET方式来获取表单元素值,但如果表单元素非常多,此时就需要用POST方式来获取表单元素值,那么如何来获取表单元素值呢?下面给出一段JS代码即可自动获取表单元素的值了. function getFormQueryString(frmID) //frmID是表单的ID号,请在表单form中先命名一个ID号 { var frmID=document.getElementById(f

Ajax中通过JS代码自动获取表单元素值的示例代码

我们在使用Ajax的时候,通常需要获取表单元素值,然后发送给后台的服务器端程序处理.如果表单元素不多的情况我们常常会通过GET方式来获取表单元素值,但如果表单元素非常多,此时就需要用POST方式来获取表单元素值,那么如何来获取表单元素值呢?下面给出一段JS代码即可自动获取表单元素的值了. function getFormQueryString(frmID) //frmID是表单的ID号,请在表单form中先命名一个ID号 { var frmID=document.getElementById(f

js获取元素在浏览器中的绝对位置_javascript技巧

JavaScript中提供获取HTML元素位置的属性: HTMLElement.offsetLeft HTMLElement.offsetHeight 但 是需要注意的是,这两个属性所储存的数值并不是该元素相对整个浏览器画布的绝对位置,而是相对于其父元素位置的相对位置,也就是说这两个数值得到的是以其 父元素左上角为(0,0)点从而计算出的数值.那么如何得到一个HTML元素的绝对位置呢,可以用以下函数: 复制代码 代码如下: //获取元素的纵坐标 function getTop(e){ var o

js与jquery获取父级元素,子级元素,兄弟元素的实现方法

 本篇文章主要是对js与jquery获取父级元素,子级元素,兄弟元素的实现方法进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助 先说一下JS的获取方法,其要比JQUERY的方法麻烦很多,后面以JQUERY的方法作对比   JS的方法会比JQUERY麻烦很多,主要则是因为FF浏览器,FF浏览器会把你的换行也当最DOM元素   原生的JS获取ID为test的元素下的子元素.可以用:   比如:   <div id="dom">     <div></d

JS封装通过className获取元素的函数示例_javascript技巧

本文实例讲述了JS封装通过className获取元素的函数.分享给大家供大家参考,具体如下: <div id="box"> <div class="star"></div> <div class="star"></div> <div class="app"></div> <p class="star"></

JS获取元素多层嵌套思路详解_javascript技巧

如果一段html嵌套过多,在js中获取还是比较麻烦的,我写了几套方案,大家可以参考参考,如果你有好的方法,也分享出来,让我们瞧瞧. HTML: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>元素多层嵌套,JS获取问题</title> </head> <body> <div

js获取元素到文档区域document的坐标方法

  获取页面中元素到文档区域document的横向.纵向坐标的两种方法及其比较 在js控制元素运动的过程中,对于页面元素坐标位置的获取是经常用到的,这里主要总结下两种方法: 一:通过叠加元素对象和它的offsetParent(如果存在)的offsetLeft/offsetTop属性来实现 在阅读javascript高级程序设计第三版DOM部分时,了解到要获取某个元素在页面上的偏移量,需要将这个元素的offsetLeft和offsetTop与其offsetParent的相同属性相加,一直循环直至根