2

嗨,我对下面的代码感到困惑

JSfiddle链接

for (var i=6;i>=0;i--)
    {
       
        setTimeout((function(i)
              {
                  
            $("div").delay(4000).html(i);
            alert(i); //if commented unable to see the countdown
            
              })
            (i),4000);
        //alert(1);
        
    }
        

我无法获得倒计时计时器.. 出了什么问题.. 当“警报”被评论时无法看到倒计时数字。请有人解释上面的代码是如何工作的。发布一些正确的代码

4

2 回答 2

4
  1. .delay()仅适用于 jQuery 动画方法,不适用于一般的 jQuery 方法,例如.html()

  2. 您所有的超时都会立即触发 - 没有什么可以将它们隔开。

最终结果是(没有alert)循环中的每次迭代都会立即运行,从而使div包含0不可见(并且非常短暂地)包含来自先前迭代的其他数字。

试试这个,而不是:

function counter($el, n) {
    (function loop() {
       $el.html(n);
       if (n--) {
           setTimeout(loop, 1000);
       }
    })();
}

counter($('div'), 6);

http://jsfiddle.net/alnitak/t3AA8/

于 2013-04-30T12:19:06.110 回答
0

不要使用警报,因为警报会停止一切。利用console.log

于 2013-04-30T13:24:51.367 回答