2012-04-05 8 views
0

我試圖建立我的網頁多個計時器,所以到目前爲止,我有,jQuery的建設多個定時器和。每個(函數(){

$('.timer').each(function() { 
var timer = setInterval(function() { 
    var time = $(this).text().split(':'); 
    var minutes = parseInt(time[0], 10); 
    var seconds = parseInt(time[1], 10); 
    // TIMER RUN OUT 
    if (!minutes && !seconds) { 
     // CLEAR TIMER 
     clearInterval(timer); 
    // MINUS SECONDS 
    } else { 
     seconds -= 1; 
    } 
    // MINUS MINUTES 
    if (seconds < 0 && minutes != 0) { 
     minutes -= 1; 
     seconds = 59; 
    // ADD ZERO IF SECONDS LESS THAN 10 
    } else { 
     if (seconds < 10) { 
      seconds = '0' + seconds; 
     } 
    } 
    // ADD ZERO IF MINUTES LESS THAN 10 
    if (minutes < 10) { 
     minutes = '0' + minutes; 
    } 
}, 1000); 
}); 

這不工作,雖然!我要去哪裏!錯

感謝

+0

究竟什麼不行? – 2012-04-05 23:15:15

回答

1

首先,在你的setInterval回調裏面,this不再指.timer元素。嘗試將其更改爲self並在致電setInterval之前添加var self = this;。其次,你永遠不會把時間寫回你的.timer元素。

+0

很好的答案!如果一個時鐘在另一個時鐘耗盡之前,jquery是否會注意清除正確的'clearInterval'? – cgwebprojects 2012-04-05 23:29:35

+1

'timer'很好,就像'self'一樣。 'this'的上下文是回調中唯一改變的。 'timer'變量本身包含在''.each'回調函數的閉包中,因此每個'.timer'元素都有自己的變量。 – 2012-04-06 00:55:46

0

你們是不是要顯示一個時鐘倒計時在這種情況下,你不更新所有的計算後的文本嘗試添加:?

$(this).text(minutes+':'+seconds);