天天看點

[ javascript ] getElementsByClassName與className和getAttribute!

對于javascript中的getElementsByClassName 在IE 6/7/8 不支援問題。

那麼需要模拟出getElementsByClassName  需要采用className屬性,這裡就涉及到javascript中的getAttribute問題。

在ie 6/7 中,對于getAttribute存在Bug

需要采用className 擷取如下:

var node = document.getElementById("test");
var name = node.className;
           

對于标準浏覽器,則可以直接使用className 也可以使用 getAttritbute,結果一樣:

node.getAttritbute("class");
           

但是如果是ie 6/7 ,則getAttribute()存在問題。

是以getElementsByClassName 可以使用如下方式:

getElementsByClazzName = document.getElementsClassName ? 
							function(name){
								return document.getElementsClassName(name);
							}:function(name){
								var nodes = document.getElementsByTagName("*"),
									result = [];
								for(var node in nodes){
									if(node.className && node.className.indexOf(name)){
										result.push(node);
									}	
								}
								return result;
							}
           

這裡的實作方式比較簡單。

1:正常屬性建議使用:node.xxx。

2:自定義屬性建議使用: node.getAttribute("xxxx")。

3:當擷取的目标是 javascript 裡的關鍵字時建議使用node.getAttribute("xxx"),如label中的for。

4:當擷取的目标是保留字,如:class,請使用className代替。

繼續閱讀