js-day18

作者: Rosemarry丶 | 来源:发表于2017-12-16 09:25 被阅读0次

    A.我今天学了什么

    1.首字母转化

    
           var str = "how are you"
    
           var reg = /(^|\s)(\w)/g
    
           // var s = str.match(reg)
    
          var s = str.replace(reg,function(m,p1,p2){ 
            return p1+p2.toUpperCase();
          })
    
           /*
        函数参数的规定:
      1. 第一个参数为每次匹配的全文本($&)。
      2. 中间参数为子表达式匹配字符串,个数不限.( $i (i:1-99))
      3. 倒数第二个参数为匹配文本字符串的匹配下标位置。
      4. 最后一个参数表示字符串本身。
    
    
    

    2.事件委托

          <body>
              <script type="text/javascript">
    
                /*-------事件委托 (委派)----------
                
                利用事件冒泡在机制,给父级绑定事件,子集也会接收到 
    
                1、动态添加 li  也会接受父级d事件
                2、循环绑定事件 性能好
    
         var ul = document.getElementById("ul");
         var btn = document.getElementById("btn");
           //把本来应该给li注册的事件,委托给ul,只需要给一个元素注册事件
           //动态创建的li,也会执行预期的效果
         ul.addEventListener("click", test, false);     //注册点击事件
         btn.onclick = function () {     //点击同样会有alert
             var li = document.createElement("li");
             li.innerHTML = "我是新插入的li标签";
             ul.appendChild(li);
         };
     //函数写在注册事件代码之外,提高性能
         function test(e) {
             alert(e.target.innerText);
         }
     </script>
    
                 */
     
    <!-- ———————————————— -->
          <ul id="ul">
         <li>我是第1个li标签</li>
         <li>我是第2个li标签</li>
         <li>我是第3个li标签</li>
         <li>我是第4个li标签</li>
     </ul>
     <input type="button" value="insertLi" id="btn">
    
     </body>
    

    3.键盘事件

          document.onkeydown=function(event){
                var e = event || window.event;
                // if(e && e.keyCode==27){ // 按 Esc 
                //     //要做的事情
                //   }
                // if(e && e.keyCode==113){ // 按 F2 
                //      //要做的事情
                //    }  
               //              
                // ctrlKey shiftKey altKey   返回true;
                // 
                if(e.ctrlKey && e.keyCode == 13){
                    alert(1)
                }
                //   if(e && e.keyCode==38){ // enter 键
                //      alert(1)
                // }
                // 
                // alert(e.keyCode)
            }; 
            document.onclick = function (){
                window.location.hash = "#a1"
            }
    

    4.分页

        // var str = window.location.search.slice(1);
    
        // var s1 = str.replace(/=/,"\":\"")
        // // var s2 ="\"" + s1 + "\"";
        // // es6方法 不用字符串拼接  就 `--${变量}----`
        // var s2 =`{"${s1}"}`
        // // 字符串转为对象
        // var obj = JSON.parse(s2)["a"]
    
          
         
           
                var lis = document.getElementsByTagName("li")
                var pageSize = 25;
                var page = Math.ceil(lis.length/pageSize)
                  // 页码 
                  for(var i =1;i<=page;i++){
                    var a = document.createElement("a");
                    a.innerHTML = i;
                    a.href = "09-分页.html?a="+i;
                    document.getElementById("d").appendChild(a)            
                }
                // 获取页码
                 var PAGE = getPage("a");
                 // 刚开始 页面中没有 location.search  需要做判断
                 if(!PAGE){
                    PAGE = 1;
                 }
                 var start = (PAGE-1)*pageSize;  //(1-1)10  从0开始 
    
                 var end = start+pageSize;  //(1)10  到10结束
    
                for(var i = start;i<end;i++){
                    // 做判断
                    if(lis[i]){
                        lis[i].className = "show" 
                    }
                    
                }
    
                
           
              function getPage(PageName){
                    // 刚开始没有 ?  做判断
                     if(location.search.indexOf("?")==-1){
                        return false;
                      }
    
                    // 去除?
                    var str = window.location.search.slice(1);
                    // 去除 "=" 替换成 ":"
                    var s1 = str.replace(/=/,"\":\"")
                    // var s2 ="\"" + s1 + "\"";
                    // es6方法 不用字符串拼接  就 `--${变量}----`
                    var s2 =`{"${s1}"}`
                    // 字符串转为对象
                    return JSON.parse(s2)[PageName]
            }
    

    5.JSON.parse

           /*JSON.parse用于从一个字符串解析出对象,如*/   
        // var str = '{"ne":"张三"}'
        // var obj = JSON.parse(str)
        // JSON.parse("[1, 2, 3, 4, ]");
        // JSON.parse('{"foo" : 1, }');
    
    
    
        /*JSON.stringify()用于从一个对象解析出字符串,如*/
        // var  obj = {
        //     "ne":"张三",
        //     "age":20
        // }
        // var str = JSON.stringify(obj)
        // 
     
        // 可以解析 执行 字符串
        // eval()
    

    相关文章

      网友评论

          本文标题:js-day18

          本文链接:https://www.haomeiwen.com/subject/hvxswxtx.html