当前位置: 首页 > article >正文

javascript选择器的封装,只需要写元素名或css类及id都可以选择到元素

//模仿jquery选择器样式,只需要写元素名或css类及id都可以选择到元素

<html>
    <head>
        <meta http-equiv="Content-Type:text/html;charset=utf=8"/>
        <link rel="shortcut icon" href="#"/>
        <title>封装选择器</title>
       
    </head>
    <style type="text/css">
        .context 
        {
            color:black;
            font-size: 16px;
           
            width: 300px;
            height: 300px;
        }
        .div
        {
            border: 1px solid blue;
        }


    </style>

    <body>
        <div class="context div" >这是文本内容

        <ul>
                <li class="listyle"><input type="text" name="user" value=""/></li>
                <li class="listyle"><input type="password" name="pwd" value=""/></li>
                <li class="listyle"><input type="password" name="pwd1" value=""/></li>

        </ul>
        </div>
        
        <script type="text/javascript">
            
            Function.prototype.addMethods=function(name,fn)
            {
                this.prototype[name]=fn;
            }

            function selectEle(selector)
            {
               var selector=this.trim(selector);
               this.elements=[];
               var node;
               if(selector.indexOf(' ')!==-1)
               {

                   node=this.getClass(selector)[0];
                   
                   if(node)
                   {
                    this.elements.push(node);
                   }else if(node=this.getTagName(selector))
                   {
                    if(node.length>1)
                    {
                        for(var i=0;i<node.length;i++)
                        {
                            this.elements.push(node[i]);
                        }
                    }
                    
                   }else
                   {
                    throw "请输入正确的选择符";
                   }
                   
               }else if(selector.indexOf('[')!==-1)
               {
                    var selector=selector.slice(1,-1);
                    node=this.getAttr(selector);
                    //console.log(this.getAttr(selector));
                    if(node)
                    {
                        this.elements.push(node);
                    }else
                    {
                        alert("请输入正确的选择符");
                    }
               }
               else
               {
                    if(/^[#|.]/.test(selector))
                    {
                        node=this.getCss(selector);
                        if(node)
                        {
                            this.elements.push(node);
                        }
                        else
                        {
                            alert("请输入正确的选择符");
                        }
                    }else
                    {
                    
                        node=this.getTagName(selector);
                        
                        if(node.length==1)
                        {
                            this.elements.push(node[0]);
                        }else if(node.length>1)
                        {
                            for(var i=0;i<node.length;i++)
                            {
                                this.elements.push(node[i]);
                            }
                        }else
                        {
                            alert('请输入正确的选择符');
                        }
                    
                    }   
               }
               
              return this.elements;
                
            }
            selectEle.addMethods('getClass',function(selector){
                return document.getElementsByClassName(selector);
            });

            selectEle.addMethods('getCss',function(selector){
                try{
                    return document.querySelector(selector);
                }catch(err)
                {
                    alert(err);
                }
                
            });

            selectEle.addMethods('getTagName',function(selector){
                try{
                    
                    return document.querySelectorAll(selector);
                }catch(err)
                {
                    alert(err);
                }
                
            });

            selectEle.addMethods('getAttr',function(selector){
                try
                {
                    var tag=document.body.getElementsByTagName('*');
                    var ele=[];
                    if(selector.indexOf('=')==-1)
                    {

                        for(var i=0;i<tag.length;i++)
                    {
                        
                        if(tag[i].getAttribute(selector)!=undefined && tag[i].tagName !="SCRIPT")
                        {
                            ele.push(tag[i]);
                        }
                        
                    }
                    
                    }else
                    {
                        var selector=selector.split('=');
                        for(var i=0;i<tag.length;i++)
                        {
                            var att=tag[i].getAttribute(selector[0]);
                            //console.log(att);
                            if(att && att!=="text/javascript" && att!=="text/css")
                            {
                                
                                if(att.toString().toLocaleLowerCase()===selector[1].toString().toLocaleLowerCase())
                                {
                                    ele.push(tag[i]);
                                }
                            }
                        }

                    }
                    return ele;
                }catch(err)
                {
                    alert(err);
                }
                    
            });

            //只是为测试IE7/8写的临时兼容去空白函数
           selectEle.addMethods('trim',function(str){
            return str.replace(/^\s\s*/,'').replace(/\s\s*$/,'');
           });
          
            var $=function(args)
            {
                return new selectEle(args);
            }
            
         


           console.log($('li'));
           
       </script>  
    </body>
</html>

http://www.kler.cn/a/133266.html

相关文章:

  • 面试时问到软件开发原则,我emo了
  • Excel模板下载\数据导出
  • 容器安装gitlab
  • Tiktok对接和内容发布申请流程
  • 计算机视觉 ---常见图像文件格式及其特点
  • 计算机网络 (4)计算机网络体系结构
  • pipeline jenkins流水线
  • Halcon (3):窗体常用语法使用
  • 无损音频播放软件 Colibri mac中文版特点介绍
  • 瑞吉外卖Day06
  • vue3-setup中如何通过ref调用子组件的函数
  • Vulkan渲染引擎开发教程 一、开发环境搭建
  • 二叉树最近公共祖先
  • 腾讯云服务器价格计算器真心好用,推荐给大家!
  • linux在非联网、无网络环境下,使用yumdownload、reportrack方法安装rpm包
  • oracle-buffer cache
  • Python调用企微机器人: 发送常用格式汇总
  • C++各种字符转换
  • 常用的软件架构设计模式
  • 【算法挨揍日记】day31——673. 最长递增子序列的个数、646. 最长数对链
  • python-opencv五种自动白平衡算法,附源码直接可用(均值、完美反射、灰度世界、动态阈值、基于图像分析的偏色检测及颜色校正)
  • Flutter笔记:Matrix4矩阵变换与案例
  • 安卓手机投屏到电视,跨品牌、跨地域同样可以实现!
  • hive sql 行列转换 开窗函数 炸裂函数
  • 对象与this
  • PS学习笔记——初识PS界面