现在的位置: 首页 > 综合 > 正文

getElementsByClassName模仿

2013年12月08日 ⁄ 综合 ⁄ 共 861字 ⁄ 字号 评论关闭

这个有一定作用,原因是ById查询,面太窄,id单独也唯一,而TagName又太宽,而且是按照元素性质来查询的,比如<a>,比如<p>标签。

模仿如下:

<script type="text/javascript">
            var all=document.getElementsByTagName("*");
            function getElementsByClassName(className){
            var tmp=new Array(  );
            for(i=0;i<all.length;i++){
                    if(all[i].className==className){         // 或者改成 all[i].className.indexOf(className) != -1
                    tmp[tmp.length]=all[i];
                    continue;       // 这里的continue是冗余的,因为本来后面就没东西啦,要开始下一个循环。。可以删除掉
            }
        }
            return tmp;

    }

    选className作为参数传入,先取到页面所有元素,定义一个临时数组,遍历,如果元素className与查询参数相同,则丢到临时数组里,访问tmp[1].className可以得到这个查询参数,表明成功。

注:

         (1)访问className不可用getAttribute("class")的形式,只能object.className

         (2)tmp[tmp.length]一直指向数组的最后一个位置

(3)直接document.write(tmp)的话会得到[object],[object],[object] ...这样形式的值,因为无论是.getElementsByTagName还是ById,ByClassName返回的每个数组元素个体都是object。

抱歉!评论已关闭.