iT邦幫忙

2025 iThome 鐵人賽

DAY 21
0

前幾天我們已經學會讓網頁有反應(事件、輸入、點擊),
但今天要更進一步 —— 學會「直接操控畫面元素」!

DOM(Document Object Model)就是 JavaScript 與網頁之間的橋樑。
只要掌握它,就能改文字、換圖片、改顏色、改結構,真正掌控整個網頁。

1.什麼是 DOM?

DOM 是瀏覽器在讀取 HTML 後建立的一棵「文件樹」。
每個標籤都是一個節點 (node),像這樣:

<html>
 └─ <body>
     ├─ <h1>
     └─ <p>

JavaScript 就是透過這棵樹,找到節點 → 改內容、改樣式、甚至新增刪除它。

2.選取元素的方法

getElementById

document.getElementById("title");

querySelector(最推薦)

document.querySelector("#title");   // 用 ID
document.querySelector(".btn");     // 用 class
document.querySelector("p");        // 用標籤

querySelectorAll

可選取多個元素,會回傳「陣列型態」集合。

document.querySelectorAll("li");

3.改內容

(1) 文字內容

<h2 id="title">原本的文字</h2>

<script>
  const title = document.getElementById("title");
  title.textContent = "文字被改成這樣啦!😎";
</script>

(2) HTML 結構

<p id="info"></p>

<script>
  const info = document.getElementById("info");
  info.innerHTML = "<strong>這段字是粗體的!</strong>";
</script>

4.改樣式

<h2 id="title">改顏色試試看 🎨</h2>

<script>
  const title = document.getElementById("title");
  title.style.color = "deepskyblue";
  title.style.fontSize = "28px";
  title.style.background = "lightyellow";
</script>

5.切換 class(最常見的互動手法)

<style>
  .highlight {
    color: white;
    background: tomato;
    padding: 5px 10px;
    border-radius: 8px;
  }
</style>

<h2 id="text">點我切換樣式</h2>

<script>
  const text = document.getElementById("text");
  text.addEventListener("click", () => {
    text.classList.toggle("highlight");
  });
</script>

6.新增與刪除元素

(1) 新增

<ul id="list"></ul>

<script>
  const list = document.getElementById("list");
  const newItem = document.createElement("li");
  newItem.textContent = "這是新項目 🆕";
  list.appendChild(newItem);
</script>

(2) 刪除

newItem.remove();  // 直接移除

7.改屬性

改圖片

<img id="pic" src="img1.jpg" width="200">
<button id="change">換圖</button>

<script>
  const pic = document.getElementById("pic");
  const btn = document.getElementById("change");

  btn.addEventListener("click", () => {
    pic.src = pic.src.includes("img1.jpg") ? "img2.jpg" : "img1.jpg";
  });
</script>

今日實戰

(1) 點擊新增留言

<input id="message" placeholder="輸入留言">
<button id="addBtn">新增留言</button>
<ul id="list"></ul>

<script>
  const input = document.getElementById("message");
  const addBtn = document.getElementById("addBtn");
  const list = document.getElementById("list");

  addBtn.addEventListener("click", () => {
    if (input.value === "") return;
    const li = document.createElement("li");
    li.textContent = input.value;
    list.appendChild(li);
    input.value = "";
  });
</script>

https://ithelp.ithome.com.tw/upload/images/20251005/20178705l3BTyx51B4.png

(2) 切換主題按鈕

<style>
  body.dark {
    background: #111;
    color: white;
    transition: 0.3s;
  }
</style>

<button id="themeBtn">切換主題 🌙</button>

<script>
  const themeBtn = document.getElementById("themeBtn");
  themeBtn.addEventListener("click", () => {
    document.body.classList.toggle("dark");
    themeBtn.textContent =
      document.body.classList.contains("dark") ? "切換主題 ☀️" : "切換主題 🌙";
  });
</script>

https://ithelp.ithome.com.tw/upload/images/20251005/20178705u7SxM3wAlE.pnghttps://ithelp.ithome.com.tw/upload/images/20251005/20178705Wsk2puXoia.png

今日小結

學會了 DOM (文件物件模型) 的概念

可以「選取、改變、新增、刪除」元素

會用 .textContent、.innerHTML、.style、.classList.toggle()

完成了互動小作品(留言板 + 主題切換)

**🎉 恭喜你!
•HTML(結構)✔
•CSS(樣式)✔
•JS(互動)✔

三劍客正式集結 🥳
從今天起,你已經能打造出「會動、能互動」的完整網頁了!

我們來複習一下本週的 JavaScript 學習內容吧!

Day 15:JS 初體驗
認識 JavaScript、了解它的用途、三種加入方式(內嵌、外部檔案、defer)、輸出到網頁或 Console

Day 16:變數與資料型態
使用 let、const 宣告變數,理解數字、字串、布林、null、undefined,學習字串拼接與樣板字串

Day 17:條件判斷 if/else
依條件執行不同結果,學會 if / else / else if、比較與邏輯運算,製作成績評分與登入驗證

Day 18:迴圈 for/while
學會 for、while、do…while 迴圈重複執行任務,搭配 break、continue 控制流程,製作九九乘法表

Day 19:函式 function
將重複程式打包成可呼叫的函式,學會參數、回傳值、箭頭函式,實作 BMI 計算與平方函式

Day 20:事件 Event
理解使用者行為(點擊、輸入、滑鼠移入)如何觸發事件,使用 addEventListener() 建立互動效果

Day 21:DOM 操作
掌握 JavaScript 操控畫面的能力,選取元素、改文字與樣式、新增刪除節點,完成留言板與主題切換

下週預告

恭喜完成 JavaScript 入門週 🎉!
接下來進入 第四週(Day 22~Day 28)——小型網站專案實作週 🧩
我們會把這三週學過的 HTML、CSS、JS 全部整合,做出真正能用的小網站!
敬請期待 🚀


上一篇
互動按鈕!事件監聽 Event (Day20)
下一篇
整合起來吧!小專案開跑 (Day22)
系列文
30 天體驗:從程式菜鳥到前端新手工程師22
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言