通过类名获取元素:
因为浏览器兼容性问题,导致getElementsByClassName()的可用性降低,但是通过类名获取元素可以提高写代码的效率,所以封装一下。
function getByClassName(classStr, context) {
context=context||document;
if(typeof document.getElementsByClassName === 'function'){
return listToArray(document.getElementsByClassName(classStr))
}
let aryClass= classStr.replace(/(^ +)|( +$)/g,"").split(/ +/g);
let eles=document.getElementsByTagName("*");
for(let i=0;i<aryClass.length;i++){
let curClass=aryClass[i];
let reg=new RegExp("(^| +)"+curClass+"( +|$)");
let ary=[];
for(let j=0;j<eles.length;j++){
reg.test(eles[j].className)?ary.push(eles[j]):null;
}
eles=ary;
}
return eles;
}
- listToArray是将类数组转化为数组的方法。
function listToArray(arg) {
let ary=[];
try {
ary=[].slice.call(arg,0)
}catch (e){
for (let i=0;i<arg.length;i++){
ary[ary.length]=arg[i];
}
}
return ary
}