• 原生JS代码封装(输入id名、class名、标签名 返回 "object HTMLDivElement")


    object HTMLDivElement,即 HTMLDivElement 对象,
    而这个对象是哪里来的呢? 查阅 《JavaScript权威指南》中文第六版363页,
    我们可以知道: HTMLDivElement 是 HTMLElement 的一个子对象,
    而 HTMLElement 又是 Element 的子对象。
     
    function $(selector) {
        var startWith = "";
        if(/^#/.test(selector)) {
            startWith = "id";
        } else if(/^./.test(selector)) {
            startWith = "class";
        } else if(/^[^#.]/.test(selector)){
            startWith = "tagname";
        }
        
        if(/[w+=.+?]/.test(selector) ){ //属性选择器
            var arr = selector.match(/(.+?)[(w+)=(.+?)]/);
            //.box[name=123]
            var _selec = arr[1]; //.box
            var propname = arr[2]; //name
            var propval = arr[3]; //123
            var elelist = null;
            
            switch(startWith) {
                case "id" : return _id(_selec.substring(1));
                case "class" : {
                    console.log();
                    elelist = Array.from(document.getElementsByClassName(_selec.substring(1)));
                    return elelist.filter(function(val, index){
                        return val[propname] == propval;
                    });
                }
                case "tagname" : {
                    elelist = Array.from(document.getElementsByTagName(_selec));
                    return elelist.filter(function(val, index){
                        return val[propname] == propval;
                    });
                }
            }
            return null;
        }
        
        switch(startWith) {
            case "id" : return _id(selector.substring(1));
            case "class" : {
                return _class(selector.substring(1));
            }
            case "tagname" : {
                return _tag(selector);
            }
        }
        
        function _id(id) {
            return document.getElementById(id)
        }
        function _class(classname) {
            console.log(classname);
            return Array.from(document.getElementsByClassName(classname));
        }
        function _tag(tag) {
            return Array.from(document.getElementsByTagName(tag));
        }
    }
  • 相关阅读:
    关于Springboot单元测试使用异步线程的一次总结
    SpringBoot,SpringCloud集成Swagger文档生成器
    SpringCloud集成分布式事务管理框架lcn
    Java中SnowFlake 雪花算法生成全局唯一id中的问题,时间不连续全为偶数解决
    根据redis自增生成全局唯一订单id
    5分钟搭建虚拟网络
    lvs+keepalived搭建双机主从架构
    SpringBoot集成XXL-JOB
    java8 日期类库基本使用
    org.apache.http.TruncatedChunkException: Truncated chunk
  • 原文地址:https://www.cnblogs.com/sunyang-001/p/10812971.html
Copyright © 2020-2023  润新知