document.getElementsByClassName使用方法

分类:Javascript| 发布:camnprbubuol| 查看: | 发表时间:2013/6/27

document.getElementsByClassName 故名思议就是根据Class名获取元素集合。但是这个方法是新生的,我们也可以自己来实现它。原理如下:

document.getElementsByTagName这个函数是获取指定标签名的节点集,通常先使用getElementsByTagName("*")取出文档中所有元素,然后进行遍历,使用正则表达式找出匹配的元素放入一个数组返回。由于IE5不支持document.getElementsByTagName("*"),要使用分支document.all以防错误。

//三个参数都是必需的,查找一网页中5007个类名为“cell”的元素,IE8历时1828 ~ 1844毫秒,
//IE6为4610 ~ 6109毫秒,FF3.5为46 ~ 48毫秒,opera10为31 ~ 32毫秒,Chrome为23~ 26毫秒,
//safari4为19 ~ 20毫秒
function getElementsByClassName(oElm, strTagName, strClassName){
    var arrElements = (strTagName == "*" && oElm.all)? oElm.all :
        oElm.getElementsByTagName(strTagName);
    var arrReturnElements = new Array();
    strClassName = strClassName.replace(/\-/g, "\\-");
    var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
    var oElement;
    for(var i=0; i < arrElements.length; i++){
        oElement = arrElements[i];
        if(oRegExp.test(oElement.className)){
            arrReturnElements.push(oElement);
        }
    }
    return (arrReturnElements)
}

在ie9+、ff5+上可以直接用document.getElementsByClassName("camnpr")函数获得你要的结果,但在ie8、7、6里边是没有这个函数的,所以需要你自己编写一个出来。或者使用下边的这个。

一个跨浏览器的方式通过class名获取元素集合:地址是:

http://getelementsbyclassname.googlecode.com/files/getElementsByClassName-1.0.1.js

365据说看到好文章不转的人,服务器容易宕机
原创文章如转载,请注明:转载自郑州网建-前端开发 http://camnpr.com/
本文链接:http://camnpr.com/archives/document-getElementsByClassName.html