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