当前位置: 代码迷 >> 综合 >> IE中getElementByName失效的问题!
  详细解决方案

IE中getElementByName失效的问题!

热度:47   发布时间:2023-10-25 02:41:39.0


注意:在IE下有些节点是没有name 属性的,就是用document.getElementsByName获取不到的。只有下面的tag有name属性
A, APPLET, attribute, BUTTON, EMBED, FORM, IMG, INPUT type=button, INPUT type=checkbox, INPUT type=file, INPUT type=hidden, INPUT type=image, INPUT type=password, INPUT type=radio, INPUT type=reset, INPUT type=submit, INPUT type=text, LINK, MAP, OBJECT, RT, RUBY, SELECT, TEXTAREA

其他都没有,比如 div,span

替代方案:(首先确定了不是标签的问题!)

在使用JavaScript写JSP页面时,我们经常使用getElementsByName("")方法。但是很多标签使用此方法并不可行。

name属性是input标签的内建属性,早期浏览器的getElementsByName方法是为了方便的获取用户的输入。由于name只是input的内建属性,其它标签没有,所以getElementsByName方法不能在别的标签中识别这一属性,因此getElementsByName方法只能用于input标签。(早期ie无效的根源

未解决此问题,我总结了两种解决方案:

1.使用jQuery来获取。

例:var statusList=getTdsByName("status");  替换为 var statusList=$('[name=status]');


2.添加方法

例:开发过程中我是用getElementsByName获取相同name的div标签,但是div本身没有Name属性,然后参考网上的办法,可以自己写方法来获取。如下:

[javascript] view plaincopy
  1. function getDivsByName(sname){  
  2.         var t = document.all;  
  3.         var divs= new Array();  
  4.         for(var i=0;i<t.length;i++) if(t[i].name == sname)  divs.push(t[i]);  
  5.             return divs;   
  6.         } 

  相关解决方案