JavaScript
setInterval が止まらない
clearInterval を呼んでいない
こんな症状
setInterval で始めた処理が止まらない。タイマー処理を制御したいときに起きやすいよ。
まず試す
const id = setInterval(...) でIDを保存し、止めたいときに clearInterval(id) を呼ぶ。
js
const id = setInterval(() => update(), 1000);
// 止めたいときに
clearInterval(id);これで直らなければ、下の「自分のケース」を確認。
🔍 自分のケースはどれ?
- ✓IDを変数に保存していない
→ const id = setInterval(...) でIDを受け取る。 - ✓clearInterval を呼んでいない
→ 停止タイミングで clearInterval(id) を呼ぶ。 - ✓ページ離脱・再描画で止めたい
→ アンマウント時やページ離脱時に clearInterval する。
なぜ起きる?
setIntervalの戻り値(タイマーID)を変数に保存していない、またはclearIntervalを呼んでいないよ。setIntervalは指定した間隔で永遠に実行し続けるから、明示的に停止しないと止まらないんだ。IDを保存しないとclearIntervalで指定できないよ。
✕ エラーが起きるコード
setInterval(() => update(), 1000);
// ID を保存していない✓ 直したコード
const id = setInterval(() => update(), 1000);
clearInterval(id);✅ 直ったか確認
clearInterval 後に処理が止まればOK。
この解決法は役立ちましたか?
🔗 関連するエラー
- Uncaught ReferenceError: xxx is not defined — 変数・関数名のタイポ
- Uncaught TypeError: Cannot read properties of null (reading 'addEventListener') — 取得しようとしたHTML要素が見つかっていない
- 404 Not Found(スクリプトが読み込まれない) — script の src パスが間違っている
- 計算結果が NaN になる — 文字列を数値に変換していない
- TypeError: xxx is not a function — 関数でないものを呼び出している
📖 この問題を学べるレッスン
✏️ 手を動かして練習
📝 関連ブログ記事
- プログラミングのエラーメッセージの読み方 — エラーの読み方を基礎から解説
- JavaScriptとは?初心者向けにわかりやすく解説 — 変数・関数・イベントの基本
- JavaScriptでボタンクリックを動かす方法 — ボタンクリック時の動作を解説