【问题标题】:jQuery loop. Adding one to prev digitjQuery 循环。前一位数字加一
【发布时间】:2013-03-28 01:51:00
【问题描述】:

我如何添加到最后一个数字+1,每次文档都有间隔? 我得到了这个:jsfiddle.net/zAt7C/1/

$(document).ready(function () {
    // verification
    $('title').text('jQuery is working!');

    // loop
    setInterval(function () {
        for (var i = 1; i < 2; i++) {
            $('.repeat').append(i + ' ');
        };
    }, 1000);
});

【问题讨论】:

  • blankblaNk 是什么意思。?一般的想法是使用问题框中的所有空间来发布代码。虽然 jsfiddle 很有帮助,但您还应该在此处包含您的代码,以防链接中断,因此人们不必离开堆栈溢出。如果关闭,您仍然可以编辑您的帖子以重新打开它。祝你好运! :-)

标签: jquery loops add intervals


【解决方案1】:

jsFiddle demo

答案其实在于变量作用域的使用。变量i 仅存在于setInterval 回调函数的范围内。在该函数之前和之后,该变量不存在,因此它不能保存值……它只是在每次函数启动时重新初始化。如果我们将变量移到setTimeout 函数之外,它将成为更大范围的一部分,即$(document).ready 事件处理程序的一部分。对于该范围和该范围内的所有其他范围(在本例中为 setTimeout 回调),它将保持可用。

Douglas Crockford 的Javascript: The Good Parts 是一本关于 Javascript 的好书。 How do JavaScript closures work?

上还有一篇很好的文章解释了范围和闭包

【讨论】:

    【解决方案2】:

    LIVE DEMO

    var i = 0;
    setInterval(function () {
        $('.repeat').append(' '+ (i++) );
    }, 1000);
    

    【讨论】:

      【解决方案3】:
      $(document).ready(function () {
          // verification
          $('title').text('jQuery is working!');
      
          (function func (i) {
              setTimeout(function () {
                  $('.repeat').append(i + ' ');
                  i += 1;
      
                  if (i <= 10) {
                      func(i);
                  }
              }, 1000);
          }(0))
      });
      

      Fiddle

      【讨论】:

        猜你喜欢
        • 2012-10-21
        • 1970-01-01
        • 1970-01-01
        • 2021-12-04
        • 2013-05-02
        • 1970-01-01
        • 2010-12-05
        • 1970-01-01
        • 2012-11-26
        相关资源
        最近更新 更多