首页
学习
活动
专区
圈层
工具
发布

框架设计续集(二)

对获取元素的getTag方法的拓展,因为getTag方法只能实现标签选择,而下边的getElem方法中还是存在缺陷,因为早期IE不支持document.getElementsByClassName方法,
代码语言:javascript
复制
<script>

    function getElem(selector,results){
        results = results || [];
        var regE = /^(?:#([\w-]+)|\.([\w-]+)|([\w]+)|(\*))$/,
                ex = regE.exec(selector);
        if(ex){
//            console.log(ex)
            if(ex[1]){
                getID(ex[1],results);
            }else if(ex[2]){
                getClass(ex[2],results);
            }else if(ex[3]){
                getTag(ex[3],results)
            }else if(ex[4]){
               getTag("*",results)
            }
        }
        return results;
    }
    function getTag(tag,results){
        results = results || [];
        results.push.apply(results,document.getElementsByTagName(tag));
        return results
    }
    function getID(id,results){
        results = results || [];
        results.push(document.getElementById(id));
        return results
    }
    function getClass(classname,results){
        results = results || [];
        results.push.apply(results,document.getElementsByClassName(classname));
        return results
    }
    function each(arr,fn){
        for(var i=0;i<arr.length;i++){
            if(fn.call(arr[i],i,arr[i])===false){
                break
            }
        }
    }

    var list = getElem("span",getElem(".sel"));
    console.log(list);
    each(list,function(){
        this.style.backgroundColor = "pink";
    })
</script>
举报
领券