對于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代替。