注意:在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;
- }