2

嗨,我很困惑与下面的代码的setTimeout JavaScript的倒数计时器与延迟

的jsfiddle link

  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); 

     } 

我不能够得到倒计时器..什么是错..当“警报”被评论无法看到倒计数的数字。 请有人解释一下上面的代码是如何工作的。张贴一些正确的代码

+0

ITYM“可以请别人解释为什么上面的代码_doesn't_没有工作”... – Alnitak 2013-04-30 12:16:00

回答

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/

+0

是的,我同意这个..延迟不是我的担心在这里..但在上面的问题,当我有警惕它工作正常..当我评论它变得疯狂..如何执行发生.. – Nirus 2013-04-30 13:00:53

+0

'alert'很可能只是给予系统时间来处理超时事件。你应该使用'console.log'来进行调试,而不是'alert'。 – Alnitak 2013-04-30 13:04:10

+0

好的我使用console.log而不是警报..我在日志中获取所有数字6到0。但是我不能使用延迟和超时在div标签中看到相同的内容。请亲自在JSfiddle上检查代码,并解释事情是如何被解雇的。谢谢.. – Nirus 2013-04-30 17:05:15

0

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