STEP GUIDE · Solution

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

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

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 版留著當責任對照,這個階段不再呼叫它。
implementationStatus.textContent = "Checkpoint 2:原生遷移版已同步目前題的 aria-expanded。";

修改後

// 舊 jQuery 版留著當責任對照,Solution 不再呼叫它。
function closeItem(item) {
  item.classList.remove("is-open");
  item.querySelector(".faq-question").setAttribute("aria-expanded", "false");
}
  const items = document.querySelectorAll(".faq-item");
      items.forEach((item) => {
        if (item !== currentItem) closeItem(item);
      });
implementationStatus.textContent = "Solution:jQuery 只留作對照,目前執行完整原生遷移版。";
README/其他文件本練習未使用

檔案:README.md

修改前

本練習沒有這個檔案。

修改後

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

怎麼看到結果

  1. 準備

    重新整理 Solution,並保持 DevTools Elements 可同時查看前後兩題按鈕。

  2. 操作

    先開第一題,再開第二題,最後再點第二題收合;核對所有 class 與 aria-expanded。

  3. 預期

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

Solution TASK-03

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

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

LEGACY MAINTENANCE

jQuery FAQ 修復

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

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

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

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