第 6 章

JavaScript 基本互動

HTML 是骨架,CSS 是外觀,而 JavaScript 是讓網頁有「靈魂」的技術。 這章你會學到如何讓網頁對使用者的點擊、輸入做出反應,做出真正有互動感的功能。

📌 本章重點

  • 如何在 HTML 中引入 JavaScript
  • 變數(var / let / const)
  • 資料型別:字串、數字、布林值
  • 函式(function)的定義與呼叫
  • DOM 操作:選取元素、修改內容
  • 事件監聽(click、input 等)

📖 教學說明

如何引入 JavaScript

HTML
<!-- 推薦:把 script 放在 </body> 前面 -->
<body>
  <!-- 頁面內容 -->

  <!-- 外部 JS 檔案 -->
  <script src="script.js"></script>
</body>

<!-- 或是直接在 HTML 裡寫 -->
<script>
  console.log('Hello from JavaScript!');
</script>

變數

變數就像是一個「命名的盒子」,用來儲存資料。

JavaScript
// let:可以重新賦值的變數(推薦)
let name = '小明';
let age = 20;

// const:不能重新賦值的常數
const PI = 3.14159;
const siteName = 'Vibe Coding';

// 基本資料型別
let greeting = '你好';        // 字串 (string)
let count = 42;              // 數字 (number)
let isLearning = true;       // 布林值 (boolean)

// 在 console 輸出(按 F12 打開瀏覽器開發工具查看)
console.log(name);
console.log('我叫' + name + ',今年' + age + '歲');

函式(function)

函式是「可以重複使用的一段程式碼」。定義一次,想用的時候隨時呼叫。

JavaScript
// 定義函式
function sayHello(name) {
  alert('你好,' + name + '!');
}

// 呼叫函式
sayHello('小明');

// 有回傳值的函式
function add(a, b) {
  return a + b;
}

let result = add(3, 5);
console.log(result); // 輸出 8

DOM 操作:選取與修改元素

DOM(Document Object Model)是瀏覽器把 HTML 轉成的「物件樹」。 用 JavaScript 操作 DOM,就能動態改變網頁的內容和樣式。

JavaScript
// 選取元素
const title = document.getElementById('main-title');
const btn = document.querySelector('.my-button');
const items = document.querySelectorAll('li');

// 修改文字內容
title.textContent = '新的標題';

// 修改 HTML 內容
title.innerHTML = '<span style="color:red">紅色標題</span>';

// 修改樣式
title.style.color = 'blue';
title.style.fontSize = '2rem';

// 新增 / 移除 CSS class
btn.classList.add('active');
btn.classList.remove('active');
btn.classList.toggle('active'); // 有就移除,沒有就加上

事件監聽

「事件」就是使用者做的動作,例如點擊、移動滑鼠、輸入文字。

JavaScript
const btn = document.getElementById('myBtn');

// 點擊事件
btn.addEventListener('click', function() {
  alert('你點擊了按鈕!');
});

// 輸入事件(用在 input 欄位)
const input = document.getElementById('nameInput');
input.addEventListener('input', function() {
  const display = document.getElementById('display');
  display.textContent = '你輸入了:' + input.value;
});

💻 完整範例:計數器

把以下程式碼存成 HTML 檔案,在瀏覽器打開就能看到可以點擊的計數器:

HTML + JavaScript
<!DOCTYPE html>
<html lang="zh-Hant">
<head>
  <meta charset="UTF-8">
  <title>計數器</title>
  <style>
    body { font-family: sans-serif; text-align: center; padding: 40px; }
    #count { font-size: 4rem; font-weight: bold; color: #4f46e5; }
    button { font-size: 1.2rem; padding: 10px 24px; margin: 8px;
             border: none; border-radius: 6px; cursor: pointer; }
    #inc { background: #4f46e5; color: white; }
    #dec { background: #e2e8f0; }
    #reset { background: #fee2e2; color: #dc2626; }
  </style>
</head>
<body>
  <h1>計數器</h1>
  <div id="count">0</div>
  <br>
  <button id="dec"></button>
  <button id="inc"></button>
  <button id="reset">重置</button>

  <script>
    let count = 0;
    const display = document.getElementById('count');

    document.getElementById('inc').addEventListener('click', function() {
      count++;
      display.textContent = count;
    });

    document.getElementById('dec').addEventListener('click', function() {
      count--;
      display.textContent = count;
    });

    document.getElementById('reset').addEventListener('click', function() {
      count = 0;
      display.textContent = count;
    });
  </script>
</body>
</html>

⚠️ 常見錯誤

getElementById 找不到元素

確認 HTML 裡的 id 和 JavaScript 裡的 id 拼字完全相同,包含大小寫。id 是大小寫敏感的!

script 標籤放在 head 裡導致抓不到元素

如果 script 在 head 裡,HTML 還沒載入完,document.getElementById 就會回傳 null。把 script 放在 body 結尾前可以解決這個問題。

= 和 == 搞混

= 是「賦值」(把值放進變數),== 是「比較」(兩個值相不相等)。在 if 判斷式裡要用 ===(嚴格相等)。

✏️ 小練習

🎯 動手試試看

練習 1

複製上方的計數器範例,修改讓計數器不能低於 0(加入 if 判斷,當 count 已經是 0 時不執行減少)。

練習 2

在你的自我介紹頁面加一個「切換深色模式」的按鈕,點擊後讓背景變成深色、文字變成白色。

練習 3

建立一個簡單的輸入框,使用者輸入名字後,底下即時顯示「你好,[名字]!」的問候語。

🎉

本章完成!

你的網頁現在會動了!下一章我們要學最進階的技巧:如何精準地讓 AI 幫你修改和優化網頁。