当className有多个时,IE8以下不支持获取同时存在多个className的元素,怎么解决??
如<div class="demo test one">123</div>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>封装Class类</title>
<!-- 主要为了解决IE8以下浏览器不支持document.getElementsByClassName();(通过类名访问节点) 的问题; -->
<style type="text/css">
div{background-color: pink;margin-top: 20px;width: 300px; height: 100px;}
</style>
<script type="text/javascript">
window.οnlοad=function(){
//获取ID下面的className
function fn(id,classname){//封装语句
//支持getElementsByClassName的情况下
if(document.getElementsByClassName){
if(id){//有ID的情况下
var arrId=document.getElementById(id);
return arrId.getElementsByClassName(classname);
}else{
return document.getElementsByClassName(classname);
}
}else{//不支持getElementsByClassName的情况下
if(id){
var arrId=document.getElementById(id);
var dom=arrId.getElementsByClassName(classname);
var arr=[];
for(var i=0;i<dom.length;i++){
var txtArr=dom[i].className.split(" ");
for(var j=0;j<txtArr.length;j++){
if(txtArr[j]==classname){
arr.push(dom[i]);
}
}
}
return arr;
}
}
}
//传入数值;并调用
fn("top","test");
console.log(fn("top","test").length);//5
var aa=fn("top","test");
console.log(aa);
for(var i=0;i<aa.length;i++){
aa[i].style.backgroundColor="red";
}
}
</script>
</head>
<body>
<div></div>
<div class="test"></div>
<div class="demo test one">123</div>
<div></div>
<div id="top">
<div class="test"></div>
<div></div>
<div class="demo one test">456</div>
<div></div>
<div class="test"></div>
<div class="one test"></div>
<div class="test"></div>
</div>
<div class="demo test">789</div>
</body>
</html>