由于document.getElementsByClassName('class名');在IE8及以下版本不兼容所以需要封裝一個函數(shù)getByClasss();
字符串切割
function getByClass(oParent,sClass){
if(document.getElementsByClassName){
return oParent.getElementsByClassName(sClass);
}else{
//獲取頁面中所有元素
var aEle=oParent.getElementsByTagName('*');
var arr=[]; //找個容器存className
for(var i=0;i<aEle.length;i++){
//把每個元素的className用空格切開
var tmp=aEle[i].className.split(' ');
//從數(shù)組里找想要的className
if(findInArr(tmp,sClass)){
arr.push(aEle[i]);
}
}
return arr;
}
}
在數(shù)組中找相同的className
function findInArr(arr,n){
for (var i=0;i<arr.length;i++) {
if(arr[i]==n)return true;
}
return false;
};
正則實現(xiàn),不需要findInArr函數(shù)
function getByClass(oParent,sClass){
if(document.getElementsByClassName){
return oParent.getElementsByClassName(sClass);
}else{
//ie 6 7 8
var arr=[];
var aEle=oParent.getElementsByTagName('*');
for(var i=0;i<aEle.length;i++){
// var arr2=aEle[i].className.split(/\s+/);
// if(findArr(arr2,sClass)){
// arr.push(aEle[i]);
// }
var reg=new RegExp('\\b'+sClass+'\\b');
if(reg.test(aEle[i].className)){
arr.push(aEle[i]);
}
}
return arr;
}
};