zoukankan      html  css  js  c++  java
  • setInterval小问题

    先看下面代码:

    1  for (var i = 0; i < 3; i++) {
    2         setTimeout(function () {
    3             console.log(i)
    4         }, 1000);
    5     }

    运行效果是

      

    输出了三次3,而要想输出1,2,3,可改进代码为:

    1 for (var i=0;i<3;i++){
    2         (function (i) {
    3             setTimeout(function () {
    4                 console.log(i);
    5             },1000);
    6         })(i);
    7     }

    效果:

    简要说一下鄙人拙见:

      第一个代码出现三次,3,的原因是,for循环时间远小于1000毫秒,所以for循环完了,计时器才运行的,获取的就是三次3.

      第二个代码:添了个闭包函数,当i每次累加的时候先执行下计时器,当等于一的时候执行计时器输出1,同理出现2,3

    还有就是不要在计时器嵌套for循环

    所以还有一下代码:

    1  var i = 0;
    2     var id = setInterval(function () {
    3         i++;
    4         console.log(i);
    5         if (i >= 12) {
    6             clearInterval(id);
    7         }
    8     }, 100);

    一个简单例子,个人感觉挺实用的。又不用嵌套for循环。。

     补充2016-09-30 11:07:19

    通过jQuery each()方法实现

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>each</title>
     6     <script src="../base/jquery-3.1.0.js"></script>
     7     <style>
     8         * {
     9             margin: 0;
    10             padding: 0;
    11             list-style: none;
    12         }
    13 
    14         .blueBg {
    15             background: blue;
    16         }
    17 
    18         .whiteBg {
    19             background: white;
    20         }
    21     </style>
    22 </head>
    23 <body>
    24 <ul>
    25     <li>内容一</li>
    26     <li>内容二</li>
    27     <li>内容三</li>
    28 </ul>
    29 </body>
    30 <script>
    31     $(function () {
    32         var timer = null;
    33         $("ul li").each(function (i) {
    34             $(this).hover(function () {
    35                 var curLi = $(this);
    36                 timer = setTimeout(function () {
    37                     curLi.removeClass("whiteBg").addClass("blueBg");
    38                     console.log(i);
    39                 });
    40             }, function () {
    41                 clearTimeout(timer);
    42                 $(this).removeClass("blueBg").addClass("whiteBg");
    43             })
    44         })
    45     })
    46 </script>
    47 </html>
  • 相关阅读:
    通过串口工具下发指令的Python脚本
    启动app-inspector报Internal Server Error
    IOS版App的控件元素定位
    Webview页面的控件元素定位
    Android版App的控件元素定位
    将Xcode升级到10.0以上版本,Appium启动报错的问题
    IOS版DesiredCapabilities参数配置
    Android版DesiredCapabilities参数配置
    Cannot instantiate the type AppiumDriver,AppiumDriver升级引发的问题
    持续集成-jenkins 环境搭建
  • 原文地址:https://www.cnblogs.com/chenluomenggongzi/p/5886324.html
Copyright © 2011-2022 走看看