在JS中主要可以通过document.getElementById,getElementsByTagName 和getElementsByClassName来获取目标HTML对象。我中document.getElementById,getElementsByTagName基本所有主流浏览器都支持,可以当心使用。但是由于getElementsByClassName方法较新,IE6,7以及一些老旧的浏览器不支持该方法,所以在使用时为了解决兼容问题,需要通过函数来封装,然互调用函数就可以解决。下面具体介绍一种简单的封装方法。
需要注意的是,以下的方法并不是完整的,它没有考虑元素的class名有相同的字符的情况。如果需要封装完整的函数,需要用到正则表达式。
<!DOCTYPE html>
<html>
<head>
<title>Homepage</title>
<meta charset="utf-8"/>
<style type="text/css">
#box{
width: 500px;
height: 500px;
border:1px solid #ddd;
background:red;
margin: 100px auto;
}
.cute{
width: 100px;
height: 100px;
margin: 10px auto;
}
</style>
</head>
<body>
<div id="box">
<div class="cute"></div>
<div class="cute"></div>
<div ></div>
<div ></div>
<div class="cute"></div>
</div>
</body>
<script type="text/javascript">
//声明函数,将classname通过参数穿进去
function getElementsByClassName(classname){
if(document.getElementsByClassName){
return document.getElementsByClassName(classname);
}
else{
var arr = []; //声明一个空数组,用于存放符合条件的元素
var results = document.getElementsByTagName("*"); //通过标签名获取所有的标签
for(var i=0;i<results.length;i++){
if(results[i].className.indexOf("classname") != -1){
arr[arr.length] = results[i]; //将className中含有“classname”的元素放入声明好的空数组
}
}
return arr; //返回该数组;数组中保存的就是我们通过ByClassName获取到的元素;
}
}
var cute = getElementsByClassName("cute");
cute[0].style.background = "yellow";
cute[1].style.background = "green";
cute[2].style.background = "blue";
</script>
</html>
转载于:https://blog.51cto.com/12006687/1844106