2014-11-25 58 views
0

這是我的jquery代碼,我想運行1秒的定時器,每一秒木材更新div的內部文本到+1,顯示時間就像一個時鐘,但我想過期木材15秒後,我的意思是我不會在15秒後更新計時器。Jquery Settimeout變量

var count = 0; 
var Update_Div = setInterval(function(){ 
    count++; 
    $("div").text(count); 
    },1000); 

    setTimeout(Update_Div, 15000); 

但15秒後,仍然更新時間,請幫我我如何解決它。 對不起,英語不好。我希望你通過看代碼就能理解。

+0

您正在使用的間隔和超時。當然,你只是想使用間隔,並清除它使用'clearInterval(refInterval);'一旦'count'等於15 – 2014-11-25 11:39:19

+0

你不需要設置超時在這裏,使用setInterval和clearInterval – 2014-11-25 11:41:02

+0

謝謝!解決了! :) – 2014-11-25 11:42:50

回答

3

這是因爲您沒有對setTimeout()做任何事情,除了傳遞間隔ID。

清除您的間隔時,你的超時達:

setTimeout(function(){ 
    clearInterval(Update_Div); 
}, 15000); 

雖然這依賴於我們的計時器同步工作互相它往往不是,將在差異毫秒。

你應該做的,而不是不使用setInterval,創造只setTimeout()一個使用遞歸函數:

function countTo(max, n){ 
    var n = n || 1; 
    setTimeout(function(){ 
     $('div').text(n); 
     if(n < max) countTo(max, n + 1); 
    }, 1000); 
} 

countTo(15); 

JSFiddle

+0

OMG,如此快速和酷的反應謝謝!!!!!! – 2014-11-25 11:41:58

+0

@HuskerNtn很高興能有所幫助,但請看我的更新與改進版本。 – George 2014-11-25 11:50:06

2
var count = 0; 
var Update_Div = setInterval(function() { 
    count++; 
    console.log(count); 
    if (count == 15){ 
     clearInterval(Update_Div); 
} 
}, 1000); 
+0

您必須在區間內移動if語句,否則它不會起作用。 – mgibala 2014-11-25 12:12:30

+0

OOPS,你是對的。我只是改變了答案。謝謝 :) – Ehsan 2014-11-25 12:17:31