进一步优化—IE8以下浏览器不支持document.getElementsByClassName() 访问节点;怎么解决?---封装自己的类名

当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>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值