CHAPTER 16 · PRACTICE WORKSPACE

判斷、陣列、迴圈與 localStorage

可顯示作品清單並記住訪客名字的小功能

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

TASK STATUS

三項任務目前狀態

TASK-01本階段處理

用判斷產生正確歡迎訊息

修改檔案:script.js

完成後看見:空白時提醒輸入,有名字時顯示歡迎

TASK-02稍後處理

用陣列與迴圈渲染作品

修改檔案:script.js

完成後看見:三項作品從資料產生為清單

TASK-03稍後處理

把名字存入並讀回 localStorage

修改檔案:script.js

完成後看見:重新整理後能讀回名字;清空並儲存後舊名字不會復活

WORKSPACE

本階段實作區

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

FOCUS TASK · TASK-01

現在只處理:用判斷產生正確歡迎訊息

修改:script.js

完成後:空白時提醒輸入,有名字時顯示歡迎

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

空白判斷 vs 預設訊息|先處理邊界

比較:空白輸入與有名字輸入是兩種狀態,先判斷才能給出各自清楚的結果。

現在做:先在 script.js 的 createWelcome(name) 做一次最小對照:只改這個責任並重新整理/操作,接著依「先留空再輸入名字,各按一次確認提示與歡迎訊息分支。」重跑,記下前後差異。

看預期與證據

預期:完成後能觀察到「空白時提醒輸入,有名字時顯示歡迎」,並說出空白輸入與有名字輸入是兩種狀態,先判斷才能給出各自清楚的結果。

證據:用前後截圖或口述比較「空白時提醒輸入,有名字時顯示歡迎」,指出這個小型實驗如何證明空白輸入與有名字輸入是兩種狀態,先判斷才能給出各自清楚的結果。

回傳文字 vs 畫面渲染|資料流分開

比較:createWelcome 負責產生訊息,呼叫方再決定如何把訊息放到 DOM。

現在做:先在 script.js 的 createWelcome(name) 做一次最小對照:只改這個責任並重新整理/操作,接著依「先留空再輸入名字,各按一次確認提示與歡迎訊息分支。」重跑,記下前後差異。

看預期與證據

預期:完成後能觀察到「空白時提醒輸入,有名字時顯示歡迎」,並說出 createWelcome 負責產生訊息,呼叫方再決定如何把訊息放到 DOM。

證據:用前後截圖或口述比較「空白時提醒輸入,有名字時顯示歡迎」,指出這個小型實驗如何證明 createWelcome 負責產生訊息,呼叫方再決定如何把訊息放到 DOM。

需要排錯時查看:任務循環(觀察 → 預測 → 實作 → 故障 → 驗收)
  1. A|觀察:在 Starter 先留空再輸入姓名,確認兩次都得到「尚未完成判斷」,作品清單與儲存行為暫不處理。
  2. B|預測:先留空再輸入名字,各按一次確認提示與歡迎訊息分支。
  3. C|實作:在 script.js 的 createWelcome(name) 完成「用判斷產生正確歡迎訊息」,一次只處理本任務責任。
  4. D|故障:若結果不一致,先依原操作重現,再檢查 createWelcome(name) 與 script.js,最後重跑原操作。
  5. E|驗收:空白時提醒輸入,有名字時顯示歡迎

完成條件:DONE-01:空白時提醒輸入,有名字時顯示歡迎

DATA & MEMORY

作品清單與訪客名字

尚未儲存名字。

作品清單

    CHAPTER HANDOFF

    把第 15 章的 DOM 事件接成資料流程

    接收:上一章已驗收的具名函數、輸入事件更新 DOM、空白 fallback 與 class 狀態切換。

    本章交棒:空白/有效輸入判斷、works 陣列由迴圈交給 renderWorks() 產生清單,以及 portfolio-visitor 的 localStorage 保存與清除;第 17 章會在獨立輪播頁重用「資料陣列 → render → DOM」責任模式,不共用本頁檔案。

    CONTINUE

    開始 TASK-01

    前往 Checkpoint 1,依要求完成「用判斷產生正確歡迎訊息」。

    前往 Checkpoint 1:完成 TASK-01