一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

js 通过class获取元素实例小结

时间:2013-11-16 编辑:简简单单 来源:一聚教程网

今天看百度-web前端开发工程师-笔试题,发现了一个自己长久以来忽视的问题。
曾经有同事用我写的代码去取元素,结果没取到。原因的话,我相信是因为她写的类名中有“-”,这个在正则中会被当作元字符来处理。所以代码可以像那个前端所写的那样:

 代码如下 复制代码

 var Tea = (function(){
    function getElementsByClassName(className,tag,parent){
        //".all" 是 DHTML www.111com.net中的用法,当 tag 等于 "*" 时,
        //如果浏览器支持 ".all" 就用,否则,用标准DOM方法
        var allTags=(tag == "*" && parent.all) ? parent.all : parent.getElementsByTagName(tag);
        var matchingElements= new Array();
        //因为 '-' 是正则表达式中的元字符,而 className 中 '-' 是合法的,
        //所以,当把 className 写入正则表达式之前,要先转义 '-'
        className=className.replace(/-/g,"\-");
        var regex=new RegExp("(^|\b)"+className+"(\b|$)");
        var element;
        for(var i=0;i             element=allTags[i];
            if(regex.test(element.className)){
                matchingElements.push(element);
            }
        }
        return matchingElements;
    }
    return {
        getElementsByClassName : getElementsByClassName
    };
})();

群里面的99兄,告诉小弟说,现在一般不流行这样的匹配方式了,可以采用以下方式:

 代码如下 复制代码


   (' ' +className.toLowerCase() + ' ').indexOf(' ' +要判断的class+ ' ') !== -1

例2

 代码如下 复制代码









热门栏目