JavaScript
⏱️ setInterval が止まらない
clearInterval を呼んでいない
😰 こんな症状
setInterval で始めた処理が止まらない。タイマー処理を制御したいときに起きやすいよ。
🔍 原因
setIntervalの戻り値(タイマーID)を変数に保存していない、またはclearIntervalを呼んでいないよ。setIntervalは指定した間隔で永遠に実行し続けるから、明示的に停止しないと止まらないんだ。IDを保存しないとclearIntervalで指定できないよ。
❌ エラーが起きるコード
setInterval(() => update(), 1000);
// ID を保存していない ✅ 直し方
1. const id = setInterval(関数, 1000);でIDを変数に保存する。 2. 停止したいタイミングでclearInterval(id);を呼ぶ。 3. コンポーネントのアンマウント時やページ離脱時にもclearIntervalする。 4. setTimeoutで再帰的に呼ぶ方が制御しやすい場合もあるよ。
✅ 修正後のコード
const id = setInterval(() => update(), 1000);
clearInterval(id); この解決法は役立ちましたか?
🔗 関連するエラー
- Uncaught ReferenceError: xxx is not defined — 変数・関数名のタイポ
- Uncaught TypeError: Cannot read properties of null — getElementById の id が存在しない
- 404 Not Found(スクリプトが読み込まれない) — script の src パスが間違っている
- ボタンを押しても何も起きない — getElementById の id 不一致
- 計算結果が NaN になる — 文字列を数値に変換していない
🔗 別カテゴリの関連エラー
📖 この問題を学べるレッスン
📝 関連ブログ記事
- プログラミングのエラーメッセージの読み方 — エラーの読み方を基礎から解説
- JavaScriptとは?初心者向けにわかりやすく解説 — 変数・関数・イベントの基本
- JavaScriptでボタンクリックを動かす方法 — ボタンクリック時の動作を解説