最近在项目中由于一个特殊的要求,需要使用类似于js的document.getElementsById的css class调用的实现。于是到网上搜索了一下,似乎并没有真正能较好达到目的且效率较理想的。于是乎,自己简单的写了一个,效率还凑合,而且支持多class名称的标签。代码如下:
function $(id){
return document.getElementById(id);
}
Array.prototype.indexOf = function(item,i){
i || (i = 0);
var length = this.length;
if (i < 0) i = length + i;
for (; i < length; i++)
if (this[i] === item) return i;
return -1;
}
document.getElementsByClassName = function(className, parentElement){
var elems = ($(parentElement)||document.body).getElementsByTagName("*");
var result=[];
for (i=0; j=elems[i]; i++){
if (j.className.split(/(\s+)/).indexOf(className)!=-1){
result.push(j);
}
}
return result;
}
使用时先将代码加在head部分或者写在独立的js文件然后在head里引用,然后在页面中适当的部分即可通过document.getElementsByClassName来获得指定class的标签数组。