`
lmh2072005
  • 浏览: 113814 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

getElementByClass

    博客分类:
  • js
阅读更多

实际应用中很多地方需要按照类名来查找对象 (mark一下)

 

function getEleByClass(classname, tagname, parentNode){

            var parent =  parentNode || document.body,

                  tagname = tagname || '*',

                  o = parent.getElementsByTagName(tagname),

                  p = [],

                  reg = new RegExp('(^|\\s+)' + classname + '(\\s+|$)');

            for (var i = 0; i < o.length; i++) {

                if (o[i].className && reg.test(o[i].className)) {

                    p.push(o[i]);  //或p[p.length] = o[i] 简单的字符串数字效率高些;

                }

            }

            return p;

 }

 

或者:

 

function  getEleByClass(classname, tagname, parentNode){

            var  parent =  parentNode || document.body,

                   tagname = tagname || '*',

                   o = parent.getElementsByTagName(tagname),

                   p = [];

            for(var i = -1, l = o.length; ++i <l;){

                var c = o[i].className.split(' ');

                for(var j = -1, cl = c.length; ++j < cl;){

                    if(classname == c[j]){

                        p.push(o[i]);

                        //p[p.length]=o[i];

                        break;

                    }

                }

            }

            return p;

  }

 

 

测试发现第一种用正则的方式在chrome下效率高些 在其他浏览器下则第二种方式效率高些

说到正则 有些问题要记录下 在写new RegExp()的时候里面的‘\’需要转义

 


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics