STEP GUIDE · Checkpoint 2

這個步驟要做什麼、改哪裡、怎麼看結果

這一步聚焦 TASK-02;下方只比較「Checkpoint 1 → Checkpoint 2」的真實異動。

01

三項 Task 進度

TASK-01已完成

依關鍵字與價格查找產品

預計修改:script.js

完成後:可以關鍵字、價格或兩者查找產品

TASK-02本步驟處理

分頁並渲染查找結果

預計修改:script.js

完成後:查找結果每頁最多三筆,卡片與頁碼同步

TASK-03稍後處理

限制上一頁與下一頁邊界

預計修改:script.js

完成後:首末頁按鈕正確停用,無查找結果時顯示 0 / 0 且兩鍵停用

02

HTML、CSS、JavaScript 與文件實際異動

展開檔案卡查看必要差異;只有程式碼區可以橫向捲動。

HTML本步驟無異動

檔案:index.html

修改前

前一步與本步驟沒有實質差異。

修改後

本步驟不需修改此語言。
CSS本步驟無異動

檔案:style.css

修改前

前一步與本步驟沒有實質差異。

修改後

本步驟不需修改此語言。
JavaScript本步驟有異動

檔案:script.js

修改前

  return products;
  list.textContent = "尚未完成渲染";

修改後

  const start = (page - 1) * pageSize;
  return getFilteredProducts().slice(start, start + pageSize);
function createProductCard(product) {
  const card = document.createElement("article");
  card.className = "product-card";
  const title = document.createElement("h2");
  title.textContent = product.name;
  const price = document.createElement("p");
  price.textContent = `$${product.price}`;
  card.append(title, price);
  return card;
}
  if (getFilteredProducts().length === 0) {
    const emptyMessage = document.createElement("p");
    emptyMessage.className = "empty-state";
    emptyMessage.textContent = "找不到符合條件的產品。";
    list.replaceChildren(emptyMessage);
    info.textContent = "第 0 / 0 頁";
    updateControls();
    return;
  }
  list.replaceChildren(...getPageItems().map(createProductCard));
  info.textContent = `第 ${page} 頁`;
  updateControls();
README/其他文件本練習未使用

檔案:README.md

修改前

本練習沒有這個檔案。

修改後

本步驟不需修改此語言。
03

怎麼看到結果

  1. 準備

    先重新整理本階段頁面,記住目前畫面,再開始操作。

  2. 操作

    先設定一組有多筆結果的查找條件,再切換頁碼,比對卡片內容與頁碼是否同步。

  3. 預期

    查找結果每頁最多三筆,卡片與頁碼同步

Checkpoint 2 TASK-02

分頁並渲染查找結果

完成後可見:查找結果每頁最多三筆,卡片與頁碼同步

本週商品