getElementsByClassName的兼容方法很多躺孝,參照zxx碌廓,方法較簡單:
getByClassName = function(classNames){
return this.querySelectorAll("." + classNames.trim().replace(/\s+/,"."));
};
if (!document.getElementsByClassName){
document.getElementsByClassName = getByClassName;
}
實(shí)際測試中,還有一種情況沒有考慮:ele.getElementsByClassName
沒有考慮域携,參照別人寫的,又該重溫下DOM相關(guān)的繼承關(guān)系溯泣,解決辦法如下:
if(!Element.getElementsByClassName){
Element.prototype.getElementsByClassName = getByClassName;
}
參考鏈接:
getElementsByClassName in ie8 [duplicate]
當(dāng)然,以上方法對ie8有效榕茧,如需要支持iee6垃沦,7可以參照一下方法
function getElementsByClassName(node, classname) {
var a = [];
var re = new RegExp('(^| )'+classname+'( |$)');
var els = node.getElementsByTagName("*");
for(var i=0,j=els.length; i<j; i++)
if(re.test(els[i].className))a.push(els[i]);
return a;
}
var tabs = getElementsByClassName(document.body,'tab');
參考鏈接
javascript document.getElementsByClassName compatibility with IE