+ -
当前位置:首页 → 问答吧 → 有没有更有效率的getClass方法

有没有更有效率的getClass方法

时间:2011-09-13

来源:互联网

网上都是这样的方法,遍历太没效率了。
----------------------------------------------------------
/*一个没有效率的getClass 方法*/
       function getElementsByClassName(n) {
              var el = [], _el = document.getElementsByTagName('*');
              for (var i=0; i<_el.length; i++ ) {
                     if (_el[i].className == n ) {
                            el[el.length] = _el[i];
                     }
              } return el;
       }
------------------------------------
有更好的没?

[ 本帖最后由 xmlovedoudou 于 2011-9-13 15:41 编辑 ]

作者: xmlovedoudou   发布时间: 2011-09-13

要遍历啊,可以考虑加个context,适当缩小遍历范围,不必每次都从document开始

作者: askok   发布时间: 2011-09-13

可是,要写成一个通用的函数啊。

作者: xmlovedoudou   发布时间: 2011-09-13

试试 XPath

作者: askok   发布时间: 2011-09-13

就想二楼说的你给价格范围就可以提高效率!
function getByClass(oParent,oClass){
              var oAll=oParent.getElementsByTagName("*");
              var odata=[];
              for(var i=0;i<oAll.length;i++){
                     if(oAll[i].className==oClass){
                            odata.push(oAll[i]);
                            }
                     };
                     return odata;
       };

作者: wyysf   发布时间: 2011-09-13

谢谢啦,都用push方法啦,哈哈。我当时还做测试,
el[el.length] = _el[i];这段代码还可以让数组长度自动增长,
还能把当前的元素压进去,感情跟push方法一样嘛。

作者: xmlovedoudou   发布时间: 2011-09-13