CHAPTER 17 · PRACTICE WORKSPACE

索引、render、亂數與輪播

可前後切換並抽取練習提示的原生 JavaScript 輪播

01 Starter 0/3
  1. 01Starter讀懂作品骨架
  2. 02Checkpoint 1加入第一項能力
  3. 03Checkpoint 2累積第二項能力
  4. 04Solution核對完整結果

TASK STATUS

三項任務目前狀態

TASK-01本階段處理

用目前索引渲染作品內容

修改檔案:script.js

完成後看見:標題、描述與張數來自 slides[index]

TASK-02稍後處理

完成可首尾循環的前後切換

修改檔案:script.js

完成後看見:最後一張可回第一張,第一張可回最後一張

TASK-03稍後處理

抽出陣列內的隨機提示

修改檔案:script.js

完成後看見:每次點擊顯示一項有效提示

WORKSPACE

本階段實作區

先確認作品目前能做什麼、還缺什麼,再從 TASK-01 開始修改。

FOCUS TASK · TASK-01

現在只處理:用目前索引渲染作品內容

修改:script.js

完成後:標題、描述與張數來自 slides[index]

講解時展開:2 個小型比較

index vs render|狀態決定畫面

比較:index 是目前狀態,render 依 slides[index] 產生畫面;不要把內容散落在按鈕事件中。

現在做:在 Checkpoint 1 暫時把 currentIndex 從 0 改成 1 再重新整理,確認 renderSlide() 顯示第二筆;復原後說明 index 是狀態、render 是畫面出口。

看預期與證據

預期:完成後能觀察到「標題、描述與張數來自 slides[index]」,並說出index 是目前狀態,render 依 slides[index] 產生畫面;不要把內容散落在按鈕事件中。

證據:用前後截圖或口述比較「標題、描述與張數來自 slides[index]」,指出這個小型實驗如何證明index 是目前狀態,render 依 slides[index] 產生畫面;不要把內容散落在按鈕事件中。

資料陣列 vs 硬編碼文字|內容集中

比較:標題、描述與張數都應來自目前資料,修改資料時畫面才能同步。

現在做:在 Checkpoint 1 只修改 slides[0].title 的文字後重新整理,確認畫面同步變更;復原資料後再驗證一次,說明資料集中比重複寫死更容易維護。

看預期與證據

預期:完成後能觀察到「標題、描述與張數來自 slides[index]」,並說出標題、描述與張數都應來自目前資料,修改資料時畫面才能同步。

證據:用前後截圖或口述比較「標題、描述與張數來自 slides[index]」,指出這個小型實驗如何證明標題、描述與張數都應來自目前資料,修改資料時畫面才能同步。

需要排錯時查看:任務循環(觀察 → 預測 → 實作 → 故障 → 驗收)
  1. A|觀察:在 Starter 對照 slides[0] 與畫面,確認標題仍是「準備顯示作品」,描述與張數尚未由 index 渲染。
  2. B|預測:重新整理後對照 slides[0],確認標題、描述與張數都由 renderSlide() 寫入;前後切換留到下一步。
  3. C|實作:在 script.js 的 renderSlide() 完成「用目前索引渲染作品內容」,一次只處理本任務責任。
  4. D|故障:若結果不一致,先依原操作重現,再檢查 renderSlide() 與 script.js,最後重跑原操作。
  5. E|驗收:標題、描述與張數來自 slides[index]

完成條件:DONE-01:標題、描述與張數來自 slides[index]

CAROUSEL LAB

作品輪播

第 1 / 3 張

準備顯示作品

內容由 render 更新。

提示會出現在這裡。

CHAPTER HANDOFF

把資料陣列接上目前索引

接收:第 16 章已驗收判斷、works 陣列迴圈 render 與 localStorage 清除邊界;本章改在獨立輪播頁練習同一個「資料陣列 → render → DOM」責任模式。

本章交棒:slidescurrentIndexrenderSlide()、首尾 modulo 與提示陣列的有效索引;第 18 章會在獨立 timer 頁加入時間生命週期,不共用本頁 HTML。

CONTINUE

開始 TASK-01

前往 Checkpoint 1,依要求完成「用目前索引渲染作品內容」。

前往 Checkpoint 1:完成 TASK-01