jQueryのsetIntervalとclearIntervalの違いは?
Webページに動きを加える際、一定時間ごとに処理を実行したい場合があります。JavaScriptでは、setInterval()
関数を使用することでこの動作を実現できます。
そして、実行中の繰り返し処理を停止する場合は、clearInterval()
関数を用います。
今回は、jQueryにおけるsetInterval()
とclearInterval()
の使い方と違いについて、具体例を交えながら詳しく解説していきます。
setInterval()の使い方
setInterval()
関数は、指定した処理を一定間隔で繰り返し実行するための関数です。
構文は以下の通りです。
setInterval(function() {
// 実行したい処理
}, 間隔ミリ秒);
第一引数には、実行したい処理を記述した関数オブジェクト、または関数の名前を指定します。 第二引数には、処理を実行する間隔をミリ秒単位で指定します。
使用例:1秒ごとに時刻を表示する
<!DOCTYPE html>
<html>
<head>
<title>setIntervalの使用例</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script>
$(document).ready(function() {
setInterval(function() {
$('#clock').text(new Date().toLocaleTimeString());
}, 1000);
});
</script>
</head>
<body>
<h1>現在の時刻:<span id="clock"></span></h1>
</body>
</html>
このコードでは、1000ミリ秒(1秒)ごとに現在時刻を取得し、HTMLの"clock"というidを持つ要素に表示する処理を行っています。
clearInterval()の使い方
setInterval()
関数で設定した繰り返し処理を停止するには、clearInterval()
関数を用います。
clearInterval()
関数は、停止したいsetInterval()
関数の戻り値を引数に指定します。
let intervalId = setInterval(function() {
// 実行したい処理
}, 間隔ミリ秒);
clearInterval(intervalId);
使用例:5秒後に時刻表示を停止する
<!DOCTYPE html>
<html>
<head>
<title>clearIntervalの使用例</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script>
$(document).ready(function() {
let intervalId = setInterval(function() {
$('#clock').text(new Date().toLocaleTimeString());
}, 1000);
setTimeout(function() {
clearInterval(intervalId);
}, 5000);
});
</script>
</head>
<body>
<h1>現在の時刻:<span id="clock"></span></h1>
</body>
</html>
上記の例では、setInterval()
で1秒ごとに時刻を表示する処理を開始し、
setTimeout()
関数を使って5秒後にclearInterval()
を実行することで、時刻表示を停止しています。
setInterval()とclearInterval()の違い
setInterval()
とclearInterval()
の違いを表にまとめます。
関数名 | 機能 |
---|---|
setInterval() |
一定間隔で処理を繰り返し実行するタイマーを設定する |
clearInterval() |
setInterval() で設定したタイマーを停止する |
まとめ
今回は、jQueryにおけるsetInterval()
とclearInterval()
の使い方と違いについて解説しました。
これらの関数を適切に使うことで、動的なWebページを作成することができます。
参考資料
- WindowOrWorkerGlobalScope.setInterval() - Web API | MDN
- WindowOrWorkerGlobalScope.clearInterval() - Web API | MDN
- jQuery API Documentation
関連QA
Q1: setInterval()は正確な時間間隔で処理を実行してくれますか?
A1: いいえ、setInterval()は正確な時間間隔を保証するものではありません。ブラウザの処理状況やJavaScriptの実行環境によって、指定した時間間隔からずれて実行される可能性があります。正確な時間間隔で処理を実行したい場合は、requestAnimationFrame()を使用する方が適切です。
Q2: setInterval()で複数の処理を実行したい場合はどうすれば良いですか?
A2: setInterval()は、一度に一つの処理しか実行できません。複数の処理を実行したい場合は、それぞれの処理に対して個別にsetInterval()を設定するか、Promiseやasync/awaitなどの非同期処理を組み合わせる必要があります。
Q3: clearInterval()を呼び出しても処理が停止しない場合はどうすれば良いですか?
A3: clearInterval()は、setInterval()の戻り値として取得したタイマーIDを指定する必要があります。タイマーIDが正しく指定されていない場合、処理は停止しません。また、処理自体に問題があり、無限ループに陥っている可能性もあります。処理の内容を見直し、問題がないか確認してください。
その他の参考記事:jquery setinterval