2010-07-14 19 views
4

我做了,並用這一個更優雅的方式,但我知道那裏有更好的方法:是什麼觸發一個JavaScript計時器

function toggle_timer() 
{ 
    if(timer_id > 0){ 
     clearTimeout(timer_id); 
     timer_id=0; 
    } 

    else timer_id = setInterval("go()", interv); 
} 

它的基礎上,假設那你會只用1個定時器(否則誰知道你會清楚哪個計時器?)到目前爲止,這沒有造成問題(我知道奇蹟)。

回答

8

你可以把它包裝成記住計時器ID的對象:

function timer(millis_, f_) { 
    return { 
     f: f_, 
     millis: millis_, 
     toggle: function(){ 
      if(this.id > 0) clear(); 
      else start(); 
     }, 
     clear: function(){ clearInterval(this.id); this.id=0; }, 
     start: function(){ this.id=setInterval(this.f, this.millis); } 
    }; 
} 

var t1=timer(1000, function(){alert("1000");}); 
var t2=timer(10000, function(){ alert("a long time");}); 

t1.toggle(); 
t2.toggle(); 

免責聲明:未經檢驗的 - 搶的念頭!

+0

該死的,那很好。旁註:每個在stackoverflow上編碼能力都很出色。我覺得自己像一個小甜甜,雖然是在一個非常有趣的操場上的菜鳥。 tyvm :-) – jason 2010-07-14 19:40:42

+0

+1 - 在非常簡單的API之上添加增值服務的好例子。 – Anurag 2010-07-14 19:52:23