IE中getElementByName失效的問題!


注意:在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 plain copy
  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.         } 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章