2011-08-28 18 views
0

這不是出於某種原因的工作(在CoffeeScript中)這個清除超時有什麼問題?

afunction =() -> 

    window.clearTimeout(timeoutID) 
    $(".x").text("#{message}").addClass("y") 
    timeoutID = window.setTimeout (-> 
     $(".x").removeClass("y") 
    ), 4000 
+1

這是什麼編譯? –

回答

5

timeoutID是一個局部變量,所以每次調用該方法時,timeoutID開始了不確定。

+3

這是年輕球員的「好」陷阱之一。想象一下,沒有全局變量 - 這很容易,如果你嘗試;-) – PandaWood

+1

因此,快速解決方法是將'timeoutID = null'放在'aFunction'之外(從而將變量移動到更高的範圍)或更改'timeoutID =。 ..'到'window.timeoutID = ...'(使它成爲一個全局的)。 –