繰り返し処理を行うsetintervalと一定時間後に処理を行うsettimeoutの使い方、それぞれの停止方法をいつも忘れてしまうのでまとめておきます。
サンプルコード
まずは、setIntervalとsetTimeoutを普通に使う場合のサンプルです。
JavaScript
var count = 0; var repeat = setInterval(function() { count += 1; console.log(count); }, 1000);
JavaScript
setTimeout(function() { console.log('5秒'); }, 5000);
繰り返し処理を行うsetIntervalを停止してみます。
JavaScript
var count = 0; var actuon = document.getElementById('actuon'); var repeatFlag = true; var repeat = setInterval(function() { count += 1; console.log(count); }, 1000); actuon.onclick = function() { if(repeatFlag) { clearInterval(repeat); actuon.innerHTML = '再開'; repeatFlag = false; } else { repeat = setInterval(function() { count += 1; console.log(count); }, 1000); actuon.innerHTML = '停止'; repeatFlag = true; } };
HTML
<button id="actuon">停止</button>
ボタンをクリックする毎に停止と再開を繰り返します。
clearIntervalのデモページ
setTimeoutで処理の停止をする前に、setTimeoutで繰り返し処理を行わせてみます。
JavaScript
var count = 0; function repeat() { count += 1; console.log(count); setTimeout(repeat, 1000); } repeat();
繰り返し処理を行っているsetTimeoutを停止させてみます。
JavaScript
var count = 0; var actuon = document.getElementById('actuon'); var repeatFlag = true; var repeat; function repeatFunc() { count += 1; console.log(count); repeat = setTimeout(repeatFunc, 1000); } repeatFunc(); actuon.onclick = function() { if(repeatFlag) { clearTimeout(repeat); actuon.innerHTML = '再開'; repeatFlag = false; } else { repeatFunc(); actuon.innerHTML = '停止'; repeatFlag = true; } };
HTML
<button id="actuon">停止</button>
ボタンをクリックする毎に停止と再開を繰り返します。
clearTimeoutのデモページ
【参考サイト】
コメントが承認されるまで時間がかかります。