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