CHAPTER 17 · 180 MINUTES

索引、render、亂數與輪播

作品資料已在陣列中,但需要一個索引記住目前項目,並在前後切換時把正確資料重新顯示。

3個明確任務
2個接回點
1份可見成果

LEARNING GOALS

本章結束時,你能做出什麼

01

用索引與 render 顯示目前作品

不是背名詞,而是能在練習頁操作、指出程式位置並解釋畫面結果。

02

讓上一張與下一張首尾相接

不是背名詞,而是能在練習頁操作、指出程式位置並解釋畫面結果。

03

從提示陣列抽出有效亂數項目

不是背名詞,而是能在練習頁操作、指出程式位置並解釋畫面結果。

PROBLEM & ANALOGY

先理解責任,再寫語法

索引像書籤,render 像把書籤所在頁攤開;亂數像從籤筒抽出一個有效編號,不能超過籤的數量。

本章要解決:作品資料已在陣列中,但需要一個索引記住目前項目,並在前後切換時把正確資料重新顯示。

接住上一章:第 16 章已能用陣列保存資料並以 render 顯示清單。

合回共同作品:本章成果必須回到同一份作品集檢查,不另開一個無關小作品。

把名詞對回畫面與程式

slides
保存每張作品標題、描述與畫面資料的陣列。
currentIndex
目前要顯示哪一張的狀態。
render()
把目前資料同步成畫面的唯一出口。
循環索引
讓第一張與最後一張相接,不得到無效索引。
random
從有效陣列範圍抽出一項提示。

SCOPE

今天的學習邊界

必會

能自己完成

用索引與 render 顯示目前作品;讓上一張與下一張首尾相接;從提示陣列抽出有效亂數項目。

辨識

看得懂即可

能辨識事件只改資料、render 統一改畫面的分工。

不教

刻意延後

不教自動播放、觸控滑動或第三方輪播套件。

本章術語:index、render、length、modulo、Math.random、Math.floor。遇到英文先回到畫面責任,不要求背拼字。

CORE IDEAS

三個核心觀念

  1. 索引有效範圍永遠是 0 到 length - 1。
  2. 按鈕事件先更新 index,再呼叫同一個 render。
  3. 亂數先乘陣列長度再 floor,才會得到可用整數索引。

DEBUG

錯誤觀察與排查順序

課堂刻意錯誤:下一張直接 index = index + 1,切到最後後畫面出現 undefined;用陣列長度與 modulo 修正首尾循環。

  1. 標題不變:確認 render 是否在 index 改變後呼叫。
  2. 最後一張後空白:檢查 modulo 使用的 length。
  3. 抽籤偶爾 undefined:確認 Math.floor 與乘法順序。

固定順序:先重現 → 讀 Console/Styles → 確認檔案與元素 → 一次只修一處 → 重跑原操作。

症狀 01

按了按鈕但內容沒變

先查:檢查 currentIndex 有改,再確認事件後呼叫 render。

症狀 02

第一張或最後一張卡住

先查:代入邊界數字,確認不會得到 -1 或陣列長度。

症狀 03

隨機提示偶爾空白

先查:檢查亂數範圍、Math.floor 與提示陣列資料。

PRACTICE CONTRACT

Starter 到 Solution 是同一份骨架

開始前先確認這四件事

  • 我已找到 slides、currentIndex 與 render。
  • 所有欄位都從目前索引產生。
  • 我會測試前後按鈕的兩個邊界。
  • 我會連點隨機提示,確認都是有效內容。
TASK-01

用目前索引渲染作品內容

檔案:script.js

位置:依任務文字搜尋對應元素或函式

結果:標題、描述與張數來自 slides[index]

TASK-02

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

檔案:script.js

位置:依任務文字搜尋對應元素或函式

結果:最後一張可回第一張,第一張可回最後一張

TASK-03

抽出陣列內的隨機提示

檔案:script.js

位置:依任務文字搜尋對應元素或函式

結果:每次點擊顯示一項有效提示

  1. 先讀任務 Starter 讀任務、先預測結果。 累積完成 0/3 個任務 開始練習
  2. 完成第一項 Checkpoint 1 完成 TASK-01。 累積完成 1/3 個任務 繼續第一步
  3. 累積第二項 Checkpoint 2 再完成 TASK-02。 累積完成 2/3 個任務 繼續第二步
  4. 核對完成品 Solution 只補 TASK-03,不重構既有骨架。 累積完成 3/3 個任務 查看完整結果

EVIDENCE

成果證據與檢核

30 秒說法可以直接照這個句型練習:

目前畫面由 slides[______] 經過 ______ 渲染;邊界用 ______ 循環,提示從 ______ 抽出。

不要只展示中間幾張成功;首張上一張與末張下一張是最重要的證據。

連按下一張走過首尾、再按上一張回捲,最後抽三次提示並解釋索引有效範圍。

交件前自我檢核 5 項 · 點選每一列完成自評

下一章:第 18 章會加入時間狀態,讓畫面能按固定間隔更新。