zoukankan      html  css  js  c++  java
  • js 小练习

    js 学习之路代码记录

    js 加载时间线

    1.创建Document对象,开始解析web页面。解析HTML元素和他们的文本内容后添加Element对象和Text节点到文档中。这个阶段document.readyState="loading"
    2.遇到link外部css,创建线程加载,并继续解析文档
    3.遇到script外部js,并且没有设置async、defer,浏览器加载,并阻塞,等待js加载完成并执行该脚本,然后继续解析文档。
    4.遇到script外部js,并且设置有async、defer,浏览器创建线程加载,并继续解析文档。对于async属性的脚本,脚本加载完成后立即执行。(异步禁止使用document.write())
    5.遇到img等,先正常解析dom结构,然后浏览器异步加载src,并继续解析文档。
    6.当文档解析完成。document.readyState="interactive"
    7.文档解析完成后,所有设置有defer的脚本会按照顺序执行。(注意与async的不同,但同样禁止使用document.write())
    8.document对象出发DOMContentLoaded事件,这也标志着程序执行从同步脚本执行阶段,转化为事件驱动阶段。
    9.当所有async的脚本加载完成并执行后、img等加载完成后,document.readyState="complete",window对象出发load事件。
    10.从此,以异步相应方式处理用户输入、网络事件等。
     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>Title</title>
     6 </head>
     7 <body>
     8 
     9     <script>
    10         // hash
    11         // 哈希方式
    12         var arr = [1,1,1,1,1,1,2,2,3,3,3,1,1,2,3,3,3,2,1,1];
    13         Array.prototype.unique = function (){
    14             var obj ={},
    15                 arr=[],
    16                 len = this.length;
    17             for (var i = 0;i < len;i++){
    18                 if(!obj[this[i]]){
    19                     obj[this[i]] = "a";
    20                     arr.push(this[i]);
    21                 }
    22             }
    23             return arr;
    24         };
    25         a = arr.unique();
    26         document.write(a);
    27     </script>
    28 
    29 </body>
    30 </html>
    数组去重
     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>练习</title>
     6 </head>
     7 <body>
     8 
     9 
    10     <script>
    11 
    12         // 2.字符串去重
    13 
    14         var stri = "qqqwwweee111333222";
    15         String.prototype.qc = function () {
    16             var len = this.length,
    17                 obj = {},
    18                 nstr = "";
    19             for (var i = 0;i < len; i ++){
    20                 if(!obj[this[i]]){
    21                     obj[this[i]] = "abc"
    22                 }
    23             }
    24             for (var i in obj){
    25                 nstr += i
    26             }
    27             return nstr
    28         }
    29     </script>
    30 
    31 </body>
    32 </html>
    字符串去重
     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>工具jstype</title>
     6 </head>
     7 <body>
     8     <script>
     9         function type(target){
    10             var ret = typeof(target);
    11             var template = {
    12                 "[object Array]" : "array",
    13                 "[object Object]" : "object",
    14                 "[object Number]" : "number - object",
    15                 "[object Boolean]" : "boolean - object",
    16                 "[object String]" : 'string - object'
    17             }
    18             if(target === null){
    19                 return "null";
    20             }else if (ret == "object"){
    21                 var str = Object.prototype.toString.call(target);
    22                 return template[str]
    23                 // 数组
    24                 // 对象
    25                 // 包装类 Object.prototype.toString
    26             }else{
    27                 return ret;
    28             }
    29             // 1.分两类  原始值
    30             // 2.区分引用值
    31         }
    32     </script>
    33 
    34 </body>
    35 </html>
    type
     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>练习</title>
     6 </head>
     7 <body>
     8 
     9 
    10     <script>
    11         // 1.一个字符串[a-z]组成,请找出该字符串第一个只出现一次的字母;
    12         var arr="qwernyweuiotyiotureioputreowyturyetuioperywioptueiwoareuwoityewuiotyueiorubrueioqwtuioruc";
    13         function myqc(s){
    14             var num = {};
    15             var c = 1;
    16             var len = s.length;
    17             for (var i = 0; i < len; i++){
    18                 // if(num[s[i]]){
    19                     // num[s[i]][1]++;
    20                 // }else{
    21                 //     num[s[i]] = [i,1];
    22                 // }
    23                 // 两种判断,一种if判断,一种三目运算符判断
    24                 num[s[i]] = num[s[i]] ? [i,++num[s[i]][1]] : [i, 1]
    25             }
    26             for(var j in num){
    27                 if (num[j][1] === 1){
    28                     if (num[j][0] < len){
    29                         len = j
    30                     }
    31                 }
    32             }
    33             return len
    34         }
    35         var a = myqc(arr);
    36         console.log(a)
    37 
    38     </script>
    39 
    40 </body>
    41 </html>
    一个字符串[a-z]组成,请找出该字符串第一个只出现一次的字母
     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>Title</title>
     6 </head>
     7 <body>
     8     <ul>
     9         <li>a</li>
    10         <li>a</li>
    11         <li>a</li>
    12         <li>a</li>
    13         <li>a</li>
    14     </ul>
    15 
    16     <script>
    17         // 点击每一个li标签,返回li的索引
    18         // 使用闭包解决此问题
    19         var liCol = document.getElementsByTagName("li"),
    20             len = liCol.length;
    21         for(var i = 0;i < len;i++){
    22             (function(j){
    23                 liCol[j].addEventListener("click",function () {
    24                     console.log(j)
    25                 })
    26             }(i))
    27         }
    28 
    29 
    30     </script>
    31 
    32 </body>
    33 
    34 </html>
    点击任意li标签,返回li的索引
     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>拖拽</title>
     6 </head>
     7 <body>
     8 
     9 
    10 
    11 <div style="100px;height:100px;background-color:red;position:absolute;left:0;top:0;"></div>
    12 
    13     <script>
    14 
    15         var div = document.getElementsByTagName("div")[0];
    16         var disX,
    17             disY;
    18         div.onmousedown = function (e) {
    19             disX = e.pageX - parseInt(div.style.left);
    20             disY = e.pageY - parseInt(div.style.top);
    21             document.onmousemove = function (e) {
    22                 var event = e || window.event;
    23                 div.style.left = e.pageX - disX + "px";
    24                 div.style.top = e.pageY - disY + "px";
    25             }
    26             document.onmouseup = function(){
    27                 document.onmousemove = null;
    28             }
    29 
    30         }
    31 
    32     </script>
    33 </body>
    34 </html>
    拖拽box
     1         document.onkeydown = function(e) {
     2             console.log(e) //打印出按键信息
     3             // 左37 上38 右39 下40
     4             var speed = 5;
     5             switch(e.which){
     6                 case 38:
     7                     div.style.top = parseInt(div.style.top) - speed + "px";
     8                     break;
     9                 case 40:
    10                     div.style.top = parseInt(div.style.top) + speed + "px";
    11                     break;
    12                 case 37:
    13                     div.style.left = parseInt(div.style.left) - speed + "px";
    14                     break;
    15                 case 39:
    16                     div.style.left = parseInt(div.style.left) + speed + "px";
    17                     break;
    18             }
    19 
    20         }
    打印出按键信息
     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>画笔工具</title>
     6     <!--画笔工具,要配合以下css-->
     7     <style>
     8         *{
     9             margin:0;
    10             padding:0;
    11         }
    12         li{
    13             box-sizing:border-box;
    14             float:left;
    15             10px;
    16             height:10px;
    17             /*border:1px solid black;*/
    18         }
    19         ul{
    20             list-style:none;
    21             1000px;
    22             height:1000px;
    23             /*设置画板区域*/
    24         }
    25     </style>
    26 </head>
    27 <body>
    28     <script>
    29 
    30         var ul = document.createElement("ul");
    31 
    32         for(var i = 0; i < 10000; i ++){
    33             // 设置画板像素
    34             var li = document.createElement("li");
    35             li.setAttribute("img-data", 0);
    36             ul.appendChild(li);
    37         }
    38         document.body.appendChild(ul);
    39         ul.onmouseover = function (e) {
    40             var event = e || window.event;
    41             var target = event.target || event.srcElement;
    42             target.style.backgroundColor = "rgb(0, 255," + target.getAttribute('img-data') +")";
    43             target.setAttribute('img-data',parseInt(target.getAttribute('img-data' )) + 20 );
    44         }
    45 
    46     </script>
    47 
    48 
    49 </body>
    50 </html>
    画笔
     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>Title</title>
     6 </head>
     7 <body>
     8 <ul>
     9     <li>1</li>
    10     <li>2</li>
    11     <li>3</li>
    12     <li>4</li>
    13     <li>5</li>
    14     <li>6</li>
    15     <li>7</li>
    16     <li>8</li>
    17     <li>9</li>
    18     <li>10</li>
    19 </ul>
    20 
    21 
    22     <script>
    23 
    24         var ul = document.getElementsByTagName("ul")[0];
    25         ul.onclick = function (e) {
    26             var event = e || window.event;
    27             var target = event.target || event.sreElement;
    28             console.log(target.innerText);
    29         }
    30 
    31 
    32     </script>
    33 </body>
    34 </html>
    事件委托
      1 <!DOCTYPE html>
      2 <html lang="en">
      3 <head>
      4     <meta charset="UTF-8">
      5     <title>Title</title>
      6     <style>
      7         /*作图不好保存,so...*/
      8         *{
      9             margin:0;
     10             padding:0;
     11         }
     12         .img1{background-color:red;}
     13         .img2{background-color:yellow;}
     14         .img3{background-color:green;}
     15         .img4{background-color:pink;}
     16         .nav{
     17             border:2px solid black;
     18             200px;
     19             height:150px;
     20             float:left;
     21             left:200px;
     22             top:100px;
     23             overflow:hidden;
     24             /*轮播图切掉*/
     25             position:relative;
     26         }
     27         ul{
     28             position:absolute;
     29             1000px;
     30             height:150px;
     31             float:left;
     32             left:0px;
     33             top:0px;
     34         }
     35         li{
     36             200px;
     37             height:150px;
     38             list-style:none;
     39             float:left;
     40             left:0;
     41             top:0;
     42             opacity: .6;
     43         }
     44 
     45 
     46 
     47     </style>
     48 </head>
     49 
     50 <body>
     51     <div class="nav">
     52         <ul class="imgs">
     53             <li class="img1"></li>
     54             <li class="img2"></li>
     55             <li class="img3"></li>
     56             <li class="img4"></li>
     57             <li class="img1"></li>
     58         </ul>
     59         <!--<span class="next">></span>-->
     60     </div>
     61 
     62 
     63     <script>
     64 
     65         // 封装函数上一页下一页
     66 
     67 
     68 
     69 
     70 
     71         var ul = document.getElementsByClassName("imgs")[0];
     72         var s = -200;
     73         function start(){
     74             var timer = setInterval(function () {
     75                 if(ul.style.left == "-800px"){//判断是否滚动完所有
     76                     setTimeout("start()",2000);
     77                     ul.style.left = "0px"
     78                     clearInterval(timer);
     79                     s = -200;
     80                 }else if(ul.style.left != s + "px"){//判断是否滚动完成一张图
     81                     ul.style.left = parseInt(getStyle(ul, "left")) - 1 + "px";
     82                     // 循环滚动
     83                 }else{
     84                     clearInterval(timer);//清除定时
     85                     setTimeout("start()",2000);//过2秒重新开启滚动
     86                     s -= 200;//归为默认值
     87                 }
     88             },0.5)
     89         }
     90         // setTimeout("start()",2000);
     91 
     92 
     93 
     94 
     95 
     96 
     97         function getStyle(elem,prop){
     98             if (window.getComputedStyle){
     99                 return window.getComputedStyle(elem,null)[prop];
    100             }else{
    101                 return elem.currentStyle[prop];
    102             }
    103         }
    104     </script>
    105 
    106 </body>
    107 </html>
    第一个自己写的轮播图
     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>Title</title>
     6 </head>
     7 <body>
     8     <input type="password" >
     9     <script>
    10         document.onkeypress = function () {
    11             var event = event || window.event;
    12             console.log(String.fromCharCode(event.charCode))
    13         }
    14     </script>
    15 </body>
    16 </html>
    提取密码框的密码
     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>Title</title>
     6 </head>
     7 <body>
     8     <input type="text" value="请输入用户名" style="color:#999" onfocus="if(this.value == '请输入用户名'){this.value ='';this.style.color='black'}" onblur="if(this.value == ''){this.value='请输入用户名';this.style.color='#999'}" onchange="this.style.color='black'">
     9 </body>
    10 </html>
    输入框功能完善
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            /*作图不好保存,so...*/
            *{
                margin:0;
                padding:0;
            }
            .img1{background-color:red;}
            .img2{background-color:yellow;}
            .img3{background-color:green;}
            .img4{background-color:pink;}
            .nav{
                border:2px solid black;
                200px;
                height:150px;
                float:left;
                left:200px;
                top:100px;
                overflow:hidden;
                /*轮播图切掉*/
                position:relative;
            }
            ul{
                position:absolute;
                1000px;
                height:150px;
                float:left;
                left:0px;
                top:0px;
            }
            li{
                200px;
                height:150px;
                list-style:none;
                float:left;
                left:0;
                top:0;
                opacity: .6;
            }
    
            .pagebutton{
                20px;
                height:20px;
                background-color:black;
                opacity:0.4;
                position:absolute;
                top:65px;
                color:#f1f1f1;
                text-aligh:center center;
            }
            .prev{
                float:left;
                left:0;
            }
            .next{
                float:left;
                left:180px;
            }
    
        </style>
    </head>
    
    <body>
        <div class="nav">
            <ul class="imgs">
                <li class="img1"></li>
                <li class="img2"></li>
                <li class="img3"></li>
                <li class="img4"></li>
                <li class="img1"></li>
            </ul>
            <div class="pagebutton-div">
                <span class="prev pagebutton"><</span>
                <span class="next pagebutton">></span>
            </div>
    
        </div>
    
    
        <script>
    
            var span = document.getElementsByClassName("prev")[0];
            var span1 = document.getElementsByClassName("next")[0];
    
            span.onclick = function () {
                pageButton(1)
            }
    
            span1.onclick = function () {
                pageButton(-1)
            }
    
    
            // 封装函数上一页下一页
    
            function pageButton(n){
                start(n)
                console.log(n)
            }
    
            var ul = document.getElementsByClassName("imgs")[0];
            var s = -200;
            function start(n){
    
                var timer = setInterval(function () {
                    console.log(s,n)
                    if(n != undefined){
                        console.log(111)
                        if(ul.style.left != s + "px") {//判断是否滚动完成一张图
                            ul.style.left = parseInt(getStyle(ul, "left")) + n + "px";
                            span.onclick=null;
                            span1.onclick=null;
                        }else{
                            n = undefined;
                            s -= 200;//减去
                            span.onclick = function () {
                                pageButton(1)
                            }
                            span1.onclick = function () {
                                pageButton(-1)
                            }
                        }
                    }else if(ul.style.left == "-800px"){//判断是否滚动完所有
                        setTimeout("start()",2000);
                        ul.style.left = "0px"
                        clearInterval(timer);
                        s = -200;
                    }else if(ul.style.left != s + "px"){//判断是否滚动完成一张图
                        ul.style.left = parseInt(getStyle(ul, "left")) - 1 + "px";
                        // 循环滚动
                    }else if(ul.style.left == s + "px"){
                        s -= 200;//减去
                        n = undefined;
                        // console.log(s)
                        clearInterval(timer);//清除定时
                        setTimeout("start()",2000);//过2秒重新开启滚动
                    }
                },0.5)
            }
            setTimeout("start()",2000);
    
    
    
    
            function getStyle(elem,prop){
                if (window.getComputedStyle){
                    return window.getComputedStyle(elem,null)[prop];
                }else{
                    return elem.currentStyle[prop];
                }
            }
        </script>
    
    </body>
    </html>
    还没完成的带按钮的轮播图
     1     <script>
     2         // 打印页面加载的四个状态
     3         console.log(document.readyState);
     4         document.onreadystatechange = function () {
     5             console.log(document.readyState);
     6         }
     7         document.addEventListener("DOMContentLoaded", function () {
     8             console.log("DOMContentLoaded");
     9         }, false)
    10 
    11     </script>
    打印页面加载的四个状态
  • 相关阅读:
    Kafka:主要参数详解(转)
    CXF:根据werservice代码生成WSDL(转)
    CentOS:ECDSA host key "ip地址" for has changed and you have requested strict checking(转)
    Oracle:一个用户操作多个表空间中表的问题(转)
    CentOS:设置系统级代理(转)
    Apache2.4:AH01630 client denied by server configuration
    Amabri:如何删除或停止指定的服务
    08 操作符相关
    07 Test结构
    06 退出 退出状态
  • 原文地址:https://www.cnblogs.com/GhostCatcg/p/9443830.html
Copyright © 2011-2022 走看看