注意:在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属性,然后参考网上的办法,可以自己写方法来获取。如下:
- function getDivsByName(sname){
- var t = document.all;
- var divs= new Array();
- for(var i=0;i<t.length;i++) if(t[i].name == sname) divs.push(t[i]);
- return divs;
- }