解决 ByClassName 在IE中的兼容性问题

最近遇到一个document.getElementsByClassName在IE中的兼容性问题,有兼容性问题的代码如下:

1
2
3
4
window.onload = function(){
var checkInput = document.getElementsByClassName("check");
alert(checkInput.length);
}

在IE的低版本中会出现如图所示的问题:
error
参考了网上的一些代码与视频,解决代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
window.onload = function(){
if(!document.getElementsByClassName){
document.getElementsByClassName = function (cls){
var ret = [];
var els = document.getElementsByTagName('*');
for(var i = 0 ; i < els.length; i++){
if(els[i].className === cls
|| els[i].className.indexOf(cls + ' ') > -1
|| els[i].className.indexOf(' ' + cls + ' ') > -1
|| els[i].className.indexOf(' ' + cls) > -1){
ret.push(els[i]);
}
}
return ret;
}
}
var checkInput = document.getElementsByClassName("check");
alert(checkInput.length);
}

相关资料:
getElementsByTagName