1. 程式人生 > >[ javascript ] getElementsByClassName與className和getAttribute!

[ javascript ] getElementsByClassName與className和getAttribute!

bsp data- attribute mil turn cti asc amp getattr

對於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 裏的keyword時建議使用node.getAttribute("xxx")。如label中的for。
4:當獲取的目標是保留字,如:class,請使用className取代。

[ javascript ] getElementsByClassName與className和getAttribute!