语法如下: var elements = getElementsByClassName(element, names);
使用示例如下:
如果html元素
<div id="example">
<p id="p1" class="aaa bbb"/>
<p id="p2" class="aaa ccc"/>
<p id="p3" class="bbb ccc"/>
</div>
对应的DOM节点为example, 那么
getElementsByClassName(example, “aaa”); 运行结果为包含id为p1, id为p2的元素列表
扫描二维码关注公众号,回复:
10779238 查看本文章
getElementsByClassName(example, “bbb ccc”);运行结果为包含id为p3的元素列表
getElementsByClassName(example, “ccc bbb”);运行结果为包含id为p3的元素列表
请实现getElementsByClassName方法,要求浏览器兼容。
- function getElementsByClassName(element,names){
- var result=[];
- if(element.getElementsByClassName){
- var elements=element.getElementsByClassName(names);
- for(var i=0; i<elements.length; i++){
- var name=elements[i];
- result.push(name);
- }
- return result;
- }else {
- var name=names.split(' ');
- var elements=element.getElementsByTagName('*');
- var patterns=[];
- var current,flag;
- var i=name.length;
- while(--i>=0){
- patterns.push(new RegExp('(^|\s)'+name[i]+'(\s|$)'));
- }
- var j=elements.length;
- while(--j>0){
- current=elements[j];
- flag=false;
- for(var k=0,kl=patterns.length; k<kl; k++){
- flag = patterns[k].test(current.className);
- if(!flag) break;
- }
- if(flag) result.push(current);
- }
- }
- return result;
- }