簡介:讓你的網頁「活」起來!

歡迎來到第二單元!到目前為止,你已經學過 HTML 如何提供網頁的「骨架」,以及 CSS 如何為網頁添加「皮膚」或樣式。現在,是時候為它加上「大腦」了——這就是 JavaScript。JavaScript 是一種能增加互動性和響應能力的程式語言。沒有它,網站就像印刷海報一樣靜態。有了 JavaScript,我們可以建立圖片庫、驗證表單,並對使用者的每一次點擊或按鍵做出反應。如果程式編寫起初看起來有點嚇人,請別擔心;我們會一步一步地為你拆解!


9.1 文件物件模型 (DOM)

為了改變網頁上的任何內容,JavaScript 需要一種與 HTML「溝通」的方式。它就是通過 文件物件模型 (DOM) 來實現這一點的。

什麼是 DOM?

你可以把 DOM 想像成 HTML 文檔的地圖或族譜。當瀏覽器載入你的頁面時,它會建立這張地圖。JavaScript 可以利用 DOM 來執行以下操作:

  • 存取 內容(例如讀取使用者在方框中輸入的文字)。
  • 更新 內容(例如在不重新整理頁面的情況下更改標題文字)。
  • 變更樣式(例如點擊按鈕時讓它變紅)。

類比: 想像你的網頁是一棟房子,DOM 就是電路圖。而 JavaScript 就像遙控器,利用這些電路來控制燈光的開關!

快速回顧: DOM 是你的 JavaScript 程式碼與瀏覽器視窗之間的橋樑。

重點總結: JavaScript 使用 DOM 來實時選擇、更改或移動頁面上的元素。


9.2 正規表達式 (Regex)

你有沒有試過在註冊網站時,系統提示你「密碼必須包含一個數字」?這通常就是透過 正規表達式 (Regular Expressions) 來處理的。

驗證與模式比對

正規表達式 (Regular Expression)(或簡稱 Regex)是一串特殊的字元序列,用於形成搜尋模式。我們使用它們進行 驗證檢查 (Validation checks),以確保資料格式正確。

你需要了解 Regex 如何搜尋以下內容:

  • 字母: 尋找特定的大小寫字元序列。
  • 數字: 檢查欄位(如電話號碼)是否包含數字。
  • 標點符號與符號: 尋找電子郵件中的 "@" 等符號。
  • 重複模式: 檢查特定數量的數字,例如 5 位數的郵遞區號。

記憶小撇步:Regex 想像成「搜尋與篩選」工具。如果輸入內容符合該模式,資料就是有效的!

重點總結: 正規表達式 用於透過比對字母、數字和符號的模式來驗證使用者輸入。


9.3 程式化功能

這是程式編寫的核心。要讓網頁能夠「執行」某些功能,你需要掌握程式碼的基本建構塊。

將 JavaScript 加入頁面

你可以使用 <script> 標籤將 JavaScript 加入 HTML。通常,這會放置在 HTML 檔案的底部,這樣頁面就能先載入其內容。

程式編寫核心概念

  • 變數 (Variables): 用於儲存資料的容器。把它們想像成貼了標籤的盒子,用來存放資訊。
  • 賦值 (Assignment): 使用 = 符號將值放入變數中。例如:let score = 10;
  • 註解 (Comments): 給人類看的筆記,電腦會忽略這些內容。在 JavaScript 中,我們用 // 來標註單行註解。
  • 資料結構 (Data Structures):
    一維陣列 (1D Array): 單一的項目列表,例如購物清單:\( [ "牛奶", "麵包", "雞蛋" ] \)。
    二維陣列 (2D Array): 列表的列表,例如帶有行列的電影院座位表。
  • 選擇 (Selection): 使用 if 陳述式來做決定。例如:如果使用者已登入,顯示「登出」按鈕。
  • 重複與迭代 (Repetition and Iteration): 使用 迴圈 (loops)(如 forwhile)來重複執行任務,例如檢查列表中的每一個項目。
  • 子程式 (Subprograms/Functions): 專門執行特定任務的程式碼區塊。當你需要執行該任務時,只需「呼叫 (call)」該函式即可。
  • 物件導向 (Object Orientation): 一種透過將資料和行為分組為「物件」來組織程式碼的方式。

你知道嗎? 二維資料結構 基本上就是一個表格!如果你會用試算表,你就能理解二維陣列。

重點總結:選擇(決策)和 迭代(迴圈)這樣的邏輯結構,讓 JavaScript 能夠自動處理複雜任務。


9.3.3 理解事件 (Events)

JavaScript 不會隨機執行,它是在等待 事件 (Events) 發生。事件是指在瀏覽器中發生的某個動作。

常見事件類型:

  • 使用者介面 (UI) 事件: 例如頁面載入完成。
  • 鍵盤事件: 例如 keydown(當使用者按下按鍵時)。
  • 滑鼠事件: 例如 click(點擊)或 mouseover(懸停)。
  • 焦點與模糊事件 (Focus and Blur): Focus 是指點擊文字方塊內部;Blur 是指點擊離開文字方塊。
  • 表單事件: 例如 submit,當使用者點擊表單的「傳送」按鈕時觸發。

快速回顧:
動作 -> 事件 -> 函式
(使用者點擊)->(觸發點擊事件)->(JavaScript 執行程式碼)


9.3.4 結合 JavaScript、HTML 與 CSS

當這三者共同運作時,你可以建立互動式的 組件 (components)。課程大綱要求你了解如何建立:

  • 幻燈片 (Slideshows): 循環播放圖片。
  • 模態視窗與圖片 (Modal Boxes and Images): 在內容之上顯示的彈出式視窗。
  • 篩選與排序列表 (Filter and Sort Lists): 組織資料(例如將價格由低到高排序)。
  • 彈出視窗 (Pop-ups): 小型警告視窗。
  • 標籤頁內容 (Tabbed Content): 在不離開頁面的情況下切換不同區塊的內容。

邏輯步驟: 要製作 模態視窗,JavaScript 會在按鈕被點擊時,將 CSS 的 display 屬性從 "none"(隱藏)更改為 "block"(可見)。


9.3.5 錯誤處理與偵錯 (Debugging)

如果你的程式碼第一次沒有成功執行,請別擔心——即使是專業開發人員,大部分時間也都在修正錯誤!這個過程稱為 偵錯 (debugging)

常見的錯誤類型:

  • 語法錯誤 (Syntax Errors): 程式碼中的拼字錯誤(例如忘記打括號)。
  • 邏輯錯誤 (Logic Errors): 程式碼可以執行,但執行結果不正確(例如本該相減卻變成了相加)。

如何處理錯誤:
你可以使用 錯誤處理 (error handling) 技術(例如 try...catch 區塊),以防止網站因發生問題而當機。使用瀏覽器開發者工具(按 F12)是找出並「偵錯」這些問題的最佳方法。

重點總結: 偵錯 是尋找並修正錯誤的過程,而 錯誤處理 則能幫助程式優雅地處理意料之外的問題。