快捷搜索:

DOM中的getElementsByClassName

本日在脚本中利用到了根据类名取元素的措施,却对其效率不甚知足。于是,小幅改动了其探测元素类名的措施,提升了约3成的效率.DOM中的getElementsByClassName解释如下:DOM API 中供给3种措施取元素(getElementById,getElementsByName,getElementsByTagName),常常编写CSS的人自然就会孕育发生疑问,有没有根据样式类名取元素的措施,可惜,DOM1/2 里面都没有这样的措施,prototype 很早就扩展过DOM的措施,添加了 getElementsByClassName,从措施名上看,彷佛异常正统,与前面3种措施名称也像,阐发其代码,却发明照样经由过程 getElementsByTagName 来实现。这个措施称不上优雅,由于必要遍历所有的元素,探测元素是否包孕目标样式类名,返回相符前提的元素数组。google了一下,却没有找到更优雅高效的替代措施。

function getElementsByClassName(className, parentElement){

var elems = ($(parentElement)||document.body).getElementsByTagName("*");

var result=[];

for (i=0; j=elems[i]; i++){

if ((" "+j.className+" ").indexOf(" "+className+" ")!=-1){

result.push(j);

}

}

return result;

}

您可能还会对下面的文章感兴趣: