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

摘要:
参考第六版JavaScript权威指南第363页,我们可以知道HTMLDivElement是HTMLElement的子对象,而HTMLElement是Element的子目标。
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));
    }
}

免责声明:文章转载自《原生JS代码封装(输入id名、class名、标签名 返回 "object HTMLDivElement")》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇openstack-往已有集群中添加控制节点,实现控制节点的高可用Redis安装教程及可视化工具RedisDesktopManager下载安装下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

用easywechat开发微信支付功能以及红包接口调用注意事项

红包接口调用: 在使用红包请求功能的时候,注意mch_billno(商户订单号)这个参数; 商户订单号(每个订单号必须唯一) 组成: mch_id+yyyymmdd+10位一天内不能重复的数字。 微信支付: 用easywechat来开发微信支付功能,步骤如下: 一,需要有一个商品下单页面,页面上有你的商品的信息,还要有购买数量,和一个购买按钮。      ...

js获取当前时间戳以及前一天时间戳

 js获取当前时间戳以及前一天时间戳(毫秒) var timestamp = (new Date()).getTime(); console.log(timestamp);//打印当前时间戳 console.log(timestamp-24*60*60*1000);//当前时间戳(毫秒) - 1天毫秒数 = 前一天时间戳...

JS几个常用的工具函数

  项目中JS也不可避免会出现重用,所以可以像Java一样抽成工具类,下面总结了几个常用的函数: 1.日期处理函数   将日期返回按指定格式处理过的字符串: function Format(now,mask) { var d = now; var zeroize = function (value, lengt...

js中如何通过身份证号计算出生日期和年龄

在html中有如下标签 身份证号:<input type="text" id="Gra_IDCard" onChange="IDCardChange()"/> <br/> 出生日期:<input type="date" id="Gra_BirthDate"/> <br/> 用...

零开始Android逆向教程(一)——初探Android逆向

 这段时间因为某些业务驱动,开始研究一些逆向相关的东西,浏览了下其所包含的大致内容,发现真是一个新大陆,跟之前耳听目染过的一些门面介绍完全不是一个层级的,真正的印证了下手难这一说法。   谨此以本文开始记录我的Android逆向之旅吧。总述   习惯于应用层开发的我们都知道,在应用上架的时候都需要程序经过编译、签名 、生成一个后缀为apk的文件才能发布到应...

h5移动端获取当前手机位置的方法,js纯获取,非原生

mounted() { var mapObj = new AMap.Map('iCenter'); mapObj.plugin('AMap.Geolocation', function() { let geolocation = newAMap.Geolocation({...