我有一個計時器,我正在動態更新。clearTimeout動態更新計時器
------------------ update -------------------------- 當我第一次發佈這個問題時,我認爲它並不重要,因爲計時器是從骨幹視圖中調用的,但我相信作爲這個結果,我不能使用全局變量(或者至少是一個全局變量不工作)。我將調用多個定時器,因此只設置一個全局變量並刪除它將不起作用。我需要能夠清除一個定時器而不清除其他定時器。
我開始什麼定時器,
function countDown(end_time, divid){ var tdiv = document.getElementById(divid), to; this.rewriteCounter = function(){ if (end_time >= MyApp.start_time) { tdiv.innerHTML = Math.round(end_time - MyApp.start_time); } else { alert('times up'); } }; this.rewriteCounter(); to = setInterval(this.rewriteCounter,1000); }
在我的應用程序,我開始與
MyApp.Views.Timer = Backbone.View.extend({ el: 'div#timer', initialize: function(){ timer = this.model; this.render(); }, events: { "clicked div#add_time": "update_timer" } render: function(){ $(this.el).append(HandlebarsTemplates['timer'](timer); this.start_timer(); }, start_timer: function(){ delete main_timer; // this doesn't work :( clearTimtout(main_timer); //this doesn't work either :( var main_timer = setTimeout(new countDown(timed.length, 'main_timer'),timed.length*1000); }, update_timer: function(){ timed.length=timed.length+30 this.start_timer(); } });
中的骨幹視圖的計時器,這樣我想要做的是更新計時器,終止舊的定時器,然後用新值重新啓動它。我有不同的計時器,所以在倒計時功能中調用timed.length
將不起作用。
請注意,你需要一個全局變量來持有'的setTimeout()返回'以'clearTimeout()'後使用的值。調用'setTimeout()'返回的值不起作用。另外,請注意你在'clearTimtout()'上做的拼寫錯誤。此外,在函數「start_timer()」中,您將main_timer重新聲明爲一個局部變量,該函數在函數存在後不會保存其值。 – Yaniro 2012-03-10 18:52:49
謝謝Yaniro,我更新了這個問題。 – pedalpete 2012-03-10 20:40:57