# Saturday, March 15, 2008

最近在项目中由于一个特殊的要求,需要使用类似于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的标签数组