• Js原生元素选择器 _$获取id class attr 属性集合


    虽然跟jQuery的实现比起来是不堪入目的。但在平时一些小项目或效果的实现中,对于js获取页面元素的操作,感觉就够用了,而不用总是依赖框架去实现一些页面的交互效果。

    js截图

    浏览器控制台

      1 <!DOCTYPE HTML>
      2    <html lang="en">
      3    <head>
      4    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
      5    <title>Js自定义_$元素选择器</title>
      6    <style type="text/css">
      7    *{margin:0;padding: 0;}
      8    #content{background-color: #ccc; 98%;height: 2000px;padding: 1%;}
      9    #left, #center, #right{float: left;}
     10    #left{ 20%;}
     11    #right{ 30%;}
     12    #txt {background-color: green;padding: 5px;line-height: 1.5;color: #fff;}
     13  
     14    #center{margin:0 1%; 48%;position: relative;}
     15    #content .dragDiv{border:1px solid #000;background-color: #fff;margin-bottom: 10px; 100%;}
     16    #content .dragDiv h1{background-color: green;font-size: 14px;height:25px;line-height: 1.5;color: #fff;cursor:move;}
     17    #dashedDiv{border: 2px dashed #000;z-index: 9;height: 200px;display: none;margin-bottom: 10px;}
     18  
     19    </style>
     20    
     21    <body>
     22  <div id="txt">虽然该css选择器跟jQuery的实现比起来是不堪一击的,尤其是在实现技巧、性能方面。但在平时一些小项目或效果的实现中,对于js获取页面元素的操作,感觉就够用了,而不用总是依赖框架去实现一些页面的交互效果。</div>
     23  
     24  
     25    
     26  <div id="content">
     27  
     28    <!-- left -->
     29    <div id="left" name="row"  class="title">
     30        <div class="dragDiv" size="font" name="dragDiv" style="height:200px;">
     31          <h1>Title1</h1>
     32          Content1...
     33        </div>
     34  
     35         <div class="dragDiv" name="dragDiv" style="height:300px;">
     36          <h1>Title2</h1>
     37          Content2...
     38        </div>
     39    </div>
     40  
     41    <!-- center -->
     42    <div id="center" name="row"  class="title">
     43        <div class="dragDiv" name="dragDiv" style="height:100px;">
     44          <h1 class="title" size="font" >Title3</h1>
     45          Content3...
     46        </div>
     47  
     48         <div class="dragDiv" name="dragDiv" style="height:500px;">
     49          <h1>Title4</h1>
     50          Content4...
     51        </div>
     52    </div>
     53  
     54    <!-- right -->
     55    <div id="right" name="row" size="font" >
     56        <div class="dragDiv" name="dragDiv" style="height:250px;">
     57          <h1 class="title">Title5</h1>
     58          Content5...
     59        </div>
     60  
     61         <div class="dragDiv" name="dragDiv" style="height:310px;">
     62          <h1 class="title" size="font" >Title6</h1>
     63          Content6...
     64        </div>
     65    </div>
     66  
     67    <!-- 虚线div -->
     68    <div id="dashedDiv"></div>
     69  </div>
     70    
     71  <script type="text/javascript">
     72  /**
     73   * 简单css选择器 支持#id, .class, tagName.className, attr=name
     74   * @param {String}
     75   * @return {object || Array} 单个元素或元素集合
     76   */
     77  var _$ = function(object){
     78    if(object === undefined ) return;
     79    var getArr = function(name,tagName,attr){
     80          var tagName = tagName || '*',
     81              eles = document.getElementsByTagName(tagName),
     82              clas = (typeof document.body.style.maxHeight === "undefined") ? "className" : "class";//ie6
     83              attr = attr || clas,
     84              Arr = [];
     85          for(var i=0;i<eles.length;i++){
     86            if(eles[i].getAttribute(attr)==name){
     87              Arr.push(eles[i]);
     88            }
     89          }
     90          return Arr;
     91        };
     92  
     93    if(object.indexOf('#') === 0){  //#id 
     94      return document.getElementById(object.substring(1));
     95    }else if(object.indexOf('.') === 0){  //.class
     96      return getArr(object.substring(1));
     97    }else if(object.match(/=/g)){  //attr=name
     98      return getArr(object.substring(object.search(/=/g)+1),null,object.substring(0,object.search(/=/g)));
     99    }else if(object.match(/./g)){ //tagName.className
    100      return getArr(object.split('.')[1],object.split('.')[0]);
    101    }
    102  }
    103  
    104  
    105  
    106  var a = _$("#right"),
    107      b = _$("#center"),
    108      c = _$(".dragDiv"),
    109      d = _$(".title"),
    110      e = _$("h1.title"),
    111      f = _$("name=dragDiv"),
    112      g = _$("size=font");
    113  
    114 console.log(a);
    115 console.log(b);
    116 console.log(c);
    117 console.log(d);
    118 console.log(e);
    119 console.log(f);
    120 console.log(g);
    121  </script>
    122    
    123  </body>
    124  </html
  • 相关阅读:
    jquery面试(2)
    jquery面试题
    javascript面试题(2)
    javascript--面试题
    遇到的问题:
    artTemplate的使用案列
    CSS3 background-size 属性
    listandset实例
    testng.xml
    sts设置Code Templates
  • 原文地址:https://www.cnblogs.com/dtdxrk/p/3088915.html
Copyright © 2020-2023  润新知