Javascript原生实现id class tagName获取元素

JQuery固然很方便,但若抛开它,一样可以用原生javascript获取dom元素。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <style>
            *{margin:0;padding:0;}
            div{width:200px;line-height:20px;margin:5px auto 0;}
            div,p{padding:10px;border:2px solid #eee;}
        </style>
    </head>
    <body>
        <div id="box">
            div id = box
            <p>p标签</p>
        </div>
        <div class="box">div class = box</div>
        <div class="box">div class = box</div>
        <div>
          div标签
          <p>p标签</p>
        </div>
    </body>
    <script>
        /**
         * getElement获取元素
         * @param  {string} selector 选择器
         * @param  {boolean} returnArrayType 是否以数组形式返回HTMLcollection
         * @return {[HTML | HTMLCollection | Array]}
         */
        function getElement(selector,returnArrayType){
            if(selector){
                var reg = /^(?:\#([\w\-]+)|\.([\w\-]+)|([\w\-]+))$/,
                    result = reg.exec(selector),
                    id = result[1],
                    className = result[2],
                    tag = result[3],
                    arr = [],
                    element = null;
                if(result){
                    if(id){
                        element = document.getElementById(id);
                        returnArrayType && arr.push(element);
                    }
                    if(className){
                        // HTMLcollection伪数组
                        element = document.getElementsByClassName(className);
                        returnArrayType && arr.push.apply(arr,element);
                    }
                    if(tag){
                        // HTMLcollection伪数组
                        element = document.getElementsByTagName(tag);
                        returnArrayType && arr.push.apply(arr,element);
                    }
                    return returnArrayType ? arr : element;
                }
                return [];
            }else{
                throw '函数getElement参数(selector)错误!';
            }
        };

        getElement('#box').style.borderColor = '#999';

        getElement('.box',1).forEach(function(item){
            item.style.borderColor = '#ddd';
        });

        getElement('p',1).forEach(function(item){
            item.style.borderColor = '#ff6600';
        });

    </script>
</html>

Mark 以备用;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值