一、getElementsByClassName的功能及使用:
功能:获取所有指定类名的元素,返回一个类数组;
使用:
let classArr = getElementsByClassName("zyk");//获取所有class是zyk的dom
坑!坑!坑!:IE9以下版本都不支持getElementsByClassName()方法
二、解决办法
思路:
1、由于IE9以下都不能使用getElementsByClassName(),但是可以使用getElementsByTagName();
2、通过document.getElementsByTagName('*')获取document中所有标签;
3、再遍历所有标签,通过className匹配到需要获取的class的Dom;
代码实现:
/*
* 方法名:getClassName
* 功能说明:通过class获取dom(兼容IE9以下)
* arguments[0]:class的名称
* arguments[1]:指定标签的class,缩小遍历范围
* */
function getClassName(className,element){
if(document.getElementsByClassName)
{
return document.getElementsByClassName(className);
}
let target = element ? element : "*";
let classNodes = document.getElementsByTagName(target);
let len =classNodes.length;
let resClassName = [];
let classArr = [];
for(let i=0;i<len;i++){
//获取dom的所有class,并转换成数组
classArr = classNodes[i].className.split(" ");
//遍历class,匹配与className一样的class
for(let j=0;j<classArr.length;j++){
if(classArr[j] == className){
resClassName.push(classNodes[i]);
break;
}
}
}
return resClassName;
}