解决getElementsByClassName()在IE8下的兼容问题

时间:2023-03-10 02:05:06
解决getElementsByClassName()在IE8下的兼容问题

getElementsByClassName,这个方法让我们可以通过 class 属性中的类名来访问元素,但是IE9 以下的浏览器不支持 。为解决这个问题,我们写一个兼容函数 getByClass() 实现在IE低版本和现代浏览器中都能通过类名来获取节点。

function getByClass(name){
//如果浏览器支持 会得到一个函数体
if(document.getElementsByClassName){
return document.getElementsByClassName(name);
}
//把所有的元素获取到
var allItems = document.getElementsByTagName("*");
var newArr = [];
//查找每一个元素的className 看其中含不含name
for(var i = 0; i < allItems.length; i++){
var classNames = allItems[i].className;//"test test11"
var arrClass = classNames.split(" ");
for(var j = 0; j < arrClass.length; j++){
if(arrClass[j]==name){
newArr.push(allItems[i]);
}
}
}
return newArr;
}