自定义getElementsByClassName的方法

说起getElementsByClassName,其实Firefox3已经支持了,你可以在Firefox3以上版本上试验一下:
document.getElementsByClassName也可以用 obj.getElementsByClassName 但是ie这个令人抓狂的家伙,就是不想踩人家脚印,非要搞什么特殊,目前为止,自己写写是必须滴

方案一:

1 function getElementsByClassName(className,tagName,parentElement){
2 var parentElement=parentElement||document;
3 //parentElement.all指parentElement下的所有标签元素的组合,只IE内核支持
4 var allTags=(tagName=="*"&&parentElement.all)?parentElement.all:parentElement.getElementsByTagName(tagName);
5 var matchingElements=[];
6 //如果className中有"-"替换成"\\-",在编译时"\\-"会执行成"\-",即"-"的转义字符
7 var className=className.replace(/\-/g,"\\-");
8 //正则表达式中"\s"表示空格,在编译时"\\s"会执行成"\s",即" "的转义字符
9 var regex=new RegExp("(^|\\s)"+className+"(\\s|$)");
10 var element;
11 for(var i=0;i<allTags.length;i++){
12 element=allTags[i];
13 if(regex.test(element.className)){
14 matchingElements.push(element);
15 }
16 }
17 return matchingElements;
18 }

posted @ 2011-03-09 16:15  郭培  阅读(331)  评论(0编辑  收藏  举报