はい、あなたはタイマーを停止するclearInterval
を使用することができます:あなたのコードがグローバルスコープにある場合
が
// Added `var handle`:
var handle = window.setInterval(updateSeconds, 1000);
function updateSeconds() {
var remainingSeconds = $('#seconds').html() - 1;
if(remainingSeconds < 0) {
remainingSeconds = 0;
}
$('#seconds').html(remainingSeconds);
if(remainingSeconds == 0) {
//stop calling updateSeconds
window.clearInterval(handle); // <== added
handle = 0; // <== added
}
}
、あなたはおそらくhandle
と呼ばれる新しいグローバル変数を作成する必要はありません。あなたは、関数内でそれをラップし、すぐに機能を実行することでこれを避けることができます。
(function() {
var handle = window.setInterval(updateSeconds, 1000);
function updateSeconds() {
var remainingSeconds = $('#seconds').html() - 1;
if(remainingSeconds < 0) {
remainingSeconds = 0;
}
$('#seconds').html(remainingSeconds);
if(remainingSeconds == 0) {
//stop calling updateSeconds
window.clearInterval(handle);
handle = 0;
}
}
})();
今handle
とupdateSeconds
は匿名関数にプライベートです。 (updateSeconds
を別の場所から呼び出す必要がある場合は、それを非公開にすることは問題になります)。
しかし、すでに何かの中にいる場合(おそらくイベントハンドラ関数)、あなたはすでにプライベートスコープを持っていますそれを行う必要はありません。
代わりにsetTimeoutを使用することもできます。 – pinichi