STEP GUIDE · Checkpoint 1

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

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

01

三項 Task 進度

TASK-01本步驟處理

讀懂既有 jQuery 並建立原生事件入口

預計修改:script.js

完成後:querySelectorAll 與 addEventListener 只切換被點擊的 FAQ

TASK-02稍後處理

在原生事件中同步 aria-expanded

預計修改:script.js

完成後:原生版的視覺開關與 aria-expanded 永遠一致

TASK-03稍後處理

以原生 forEach 完成單開與再點收合

預計修改:script.js

完成後:開新題會關閉舊題,再點目前題可收合,aria 不殘留

02

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

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

HTML本步驟無異動

檔案:index.html

修改前

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

修改後

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

檔案:style.css

修改前

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

修改後

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

檔案:script.js

修改前

// 這是舊站原本可運作的 jQuery 版:先閱讀責任,不要急著刪除。
  if (!window.jQuery) {
    implementationStatus.textContent = "jQuery 未載入:請檢查網路或改用教師提供的本機備援檔。";
    return;
  }
  implementationStatus.textContent = "Starter:目前執行既有 jQuery 版,請先操作並逐行標記責任。";
setupLegacyFaq();

修改後

// 舊 jQuery 版留著當責任對照,這個階段不再呼叫它。
function setupNativeFaq() {
  const questions = document.querySelectorAll(".faq-question");
  questions.forEach((button) => {
    button.addEventListener("click", () => {
      const currentItem = button.closest(".faq-item");
      currentItem.classList.toggle("is-open");
    });
  });
}
implementationStatus.textContent = "Checkpoint 1:已停用 jQuery handler,目前執行原生遷移版。";
setupNativeFaq();
README/其他文件本練習未使用

檔案:README.md

修改前

本練習沒有這個檔案。

修改後

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

怎麼看到結果

  1. 準備

    先在 Starter 操作可運作的 jQuery 版,再打開 script.js 標記舊碼每一行責任。

  2. 操作

    進入 Checkpoint 1,確認啟用的是 querySelectorAll、addEventListener 與 classList,依序點擊不同 FAQ。

  3. 預期

    querySelectorAll 與 addEventListener 只切換被點擊的 FAQ

Checkpoint 1 TASK-01

讀懂既有 jQuery 並建立原生事件入口

完成後可見:querySelectorAll 與 addEventListener 只切換被點擊的 FAQ

LEGACY MAINTENANCE

jQuery FAQ 修復

本課使用 jQuery 3.7.1 維護分支示範。

不是,它是包裝常見 JavaScript 操作的函式庫。

不一定,本課定位是讀懂與維護既有網站。

不會,下一課使用原生 fetch。