由于document.getElementsByClassName('class名');在IE8及以下版本不兼容所以需要封装一个函数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(' ');
//从数组里找想要的className
if(findInArr(tmp,sClass)){
arr.push(aEle[i]);
}
}
return arr;
}
}
在数组中找相同的className
function findInArr(arr,n){
for (var i=0;i<arr.length;i++) {
if(arr[i]==n)return true;
}
return false;
};
正则实现,不需要findInArr函数
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;
}
};