← 課程地圖

MINI PROJECT 56

做一個成績追蹤器

把 HTML、CSS、JavaScript 串成一個真正會動的小網站。先自己做,再回來對照規格。

需求

使用者輸入「科目名稱 + 分數」,按新增後出現在清單;顯示目前平均;分數 ≥ 60 標示通過;可以刪除一筆。

你會用到的 HTML

<form>
  <input id="course" required>
  <input id="score" type="number" min="0" max="100" required>
  <button type="submit">新增</button>
</form>
<ul id="list"></ul>
<p id="average"></p>

資料模型

const courses = [
  { name: "Math", score: 90 }
];

你要自己完成的 function

addCourse(name, score)
removeCourse(index)
calculateAverage()
render()

事件流程

User submit
  ↓
Browser fires submit event
  ↓
callback reads input
  ↓
update courses array
  ↓
render()
  ↓
DOM changes
  ↓
Browser paints new UI

CSS 要求

卡片 max-width、表單用 Grid/Flex、pass/fail 有不同 class、手機寬度不橫向爆版、button 有 hover/focus-visible。

Debug 任務

完成後故意製造四個錯誤:把 selector id 拼錯、把 score 留成 string、刪掉 return、讓 array index 超界。每次記錄 symptom → error/evidence → root cause → fix。

進階

再加 localStorage,讓重新整理後資料仍存在。做到這裡時,你就會真的遇到 serialization、JSON、state persistence,而不是只背名詞。