让js支持getElementsByClassName

都知道document.getElementsByClassName这个方法只能在ie8以上的浏览器使用,也就是说getElementsByClassName是在支持html5的浏览器下才能执行。

为了让ie9以下的浏览器能够支持这个方法于是我自己写了个getElementsByClassName脚本方法让浏览器也能够像jquery那样拿到Class就能获取对象。

为了测试方法的通用性我已用 ie、firefox 、chrome 、safari 进行测试,结果令我很满意,都能完美运行。


一下是我实现的源码看起里会比较乱,只要复制出来运行就可以看到效果,或者可以狠狠点击这里看例子


	
	
	
	
	getElementsByClassName
	
	
	
1
2

12

<div class="test id">1</div>
<div class="test454545454">2</div>
<p class="test454545454">12</p>
<script>
function getElementsByClassName(className){
    var elems = [];
    if(!document.getElementsByClassName){
        var dom = document.getElementsByTagName("*");
        for(var i =0 ;i<dom.length;i++){
            if(dom[i].className){
                var classs = dom[i].className.split(" ");
                for(var c = 0;c<classs.length;c++){
                    if(classs[c]==className){
                        elems.push(dom[i]);            
                    }
                }
            }
        }
    }else{
        var dom = document.getElementsByClassName(className);
        for(var i =0 ;i<dom.length;i++){
            elems.push(dom[i]);    
        }
    }
    return elems;
}

var testElemt = getElementsByClassName("test454545454");
for(var i =0 ;i<testElemt.length;i++){
    alert("testElemt "+testElemt[i].innerHTML);    
}
</script>

原文地址 http://haiqiancun.com/bbs/bbsPage/0/detail/297e9e7946a599780146a5a38dde0003/1/20140806112531



你可能感兴趣的:(js)