啟動前阻擋重複 timer
不是背名詞,而是能在練習頁操作、指出程式位置並解釋畫面結果。
CHAPTER 18 · 240 MINUTES
本章共 240 分鐘:課次 18 完成 Timer 核心,課次 19 前 60 分鐘專做重複 interval、清理與狀態不同步除錯。
LEARNING GOALS
不是背名詞,而是能在練習頁操作、指出程式位置並解釋畫面結果。
不是背名詞,而是能在練習頁操作、指出程式位置並解釋畫面結果。
不是背名詞,而是能在練習頁操作、指出程式位置並解釋畫面結果。
PROBLEM & ANALOGY
setInterval 像重複響的鬧鐘,timer id 是鬧鐘編號;暫停是關掉鬧鐘但保留秒數,重設則連秒數一起回到起點。
本章要解決:本章共 240 分鐘:課次 18 完成 Timer 核心,課次 19 前 60 分鐘專做重複 interval、清理與狀態不同步除錯。
接住上一章:第 17 章以索引與 render 管理輪播畫面。
合回共同作品:本章成果必須回到同一份作品集檢查,不另開一個無關小作品。
SCOPE
啟動前阻擋重複 timer;暫停後可從原秒數繼續;重設回初始值且倒數到零自動停止。
能辨識 setTimeout 一次與 setInterval 重複的差別。
不教精密計時、背景分頁校正或非同步事件迴圈細節。
本章術語:setInterval、clearInterval、timer id、state、null、render。遇到英文先回到畫面責任,不要求背拼字。
CORE IDEAS
DEBUG
課堂刻意錯誤:先拿掉重複啟動防護,連按三次開始,觀察一秒扣三格;在 console 記錄三個 timer id 後修正。
固定順序:先重現 → 讀 Console/Styles → 確認檔案與元素 → 一次只修一處 → 重跑原操作。
先查:檢查是否已有 interval,再看 start 是否清除舊 timer。
先查:確認 pause 保留秒數,resume 重新建立一個 timer。
先查:確認 reset clearInterval 且 timer id 已清空。
PRACTICE CONTRACT
檔案:script.js
位置:依任務文字搜尋對應元素或函式
結果:每秒扣一且連按不加速,零時自動停止
檔案:script.js
位置:依任務文字搜尋對應元素或函式
結果:暫停保留秒數,之後可繼續
檔案:script.js
位置:依任務文字搜尋對應元素或函式
結果:任何狀態下都回到 10 秒與尚未開始
EVIDENCE
目前 state 是 ______;timer id ______ 代表 ______;reset 會先 ______,再 ______。
時間功能證據要包含生命週期;只截一張數字畫面無法證明沒有重複 timer。
現場快速連按開始、暫停後繼續、最後重設;口頭說明 remainingSeconds 與 timerId 的不同。
下一章:第 19 章會閱讀舊站 jQuery,對照相同的事件與 class 狀態概念。