如果我給一個JavaScript setTimeout函數一個ID,那麼我該如何執行或觸發它?給一個超時函數一個Id,但那我該如何觸發它?
var timerId = setTimeout(function(){alert('doh')}, 1000);
//timerId; doesn't work,
//trigger it here
clearTimeout(timerId)
如果我給一個JavaScript setTimeout函數一個ID,那麼我該如何執行或觸發它?給一個超時函數一個Id,但那我該如何觸發它?
var timerId = setTimeout(function(){alert('doh')}, 1000);
//timerId; doesn't work,
//trigger it here
clearTimeout(timerId)
調用setTimeout()
的動作應該執行它。我相信你所要做的就是讓這一行動每秒重演一次。對於您需要使用setInterval()
代替:
var timerId = setInterval(function(){alert('doh')}, 1000);
// you'll get an alert every second untill clearTimeout(timerId) is called.
由於@j08691說,你可能沒有看到警報,因爲你打電話clearTimeout()
你叫setTimeout()
後立刻。
作爲一個側面說明,你可能不希望使用alert()
功能調試此作爲警報是一個阻擊戰 - 正在顯示警報沒有其他JS將被執行。對於這種類型的調試,使用console.log()
會更好。它不會阻塞,可以讓您輕鬆檢查變量。
唯一使用返回值setTimeout
已經是取消定時器,你已經用clearTimeout
做了。
如果你想早點觸發它,那麼你應該清除它,然後調用原始函數。
例如:
function doh(){
alert('doh')
}
var timerId = setTimeout(doh, 1000);
clearTimeout(timerId)
doh();
你的意思是,執行它?它應該在1000ms後自動啓動 – SimonR
如果您希望setTimeout調用起作用,請刪除clearTimeout行。 – j08691