)在被瀏覽器解讀時,會變成一個 DOM 物件。而這些 DOM 物件上,會有很多「事件屬性」,像是:
onclick(點擊)
onmouseover(滑鼠移入)
onchange(表單變動)
onkeydown(鍵盤按下)…等等
這些屬性允許我們把 JavaScript 的邏輯「綁上去」。
🔸 為什麼這叫做 inline event handler?
這種寫法叫做 inline handler(內嵌事件處理器),因為你直接在 HTML 裡就寫了 JavaScript 程式碼。
優點 ✅:
快速上手、易於測試
小型範例或 demo 很方便
缺點 ❌:
HTML 與 JavaScript 混在一起,程式碼難以維護
不能重複使用同一段邏輯
一旦功能變複雜,會變得很亂(例如加 if 判斷、操作 DOM 等)
因此,實務上通常會建議改用 JavaScript 動態綁定的方式,將 HTML 結構與邏輯分離。
JavaScript 動態綁定 onclick(推薦用法)
如果你希望程式碼結構更清晰、邏輯更好維護,可以將 JavaScript 寫在
📌 執行流程說明:
使用 getElementById() 選取具有 id="btn" 的按鈕。
將 onclick 屬性指定為一個函式(function),這個函式會在點擊時被執行。
📦 優點:這種方式的好處?
✅ 程式碼可重用、模組化(可抽成函式、事件集中管理)
✅ HTML 和 JavaScript 分開,容易維護
✅ 可針對多個元素重複綁定相同邏輯
✅ 支援更進階的事件處理(例如加防呆、動態切換內容)
🚫 小心:只綁定一次
用 .onclick = 的方式綁定事件,每次指派新函式都會覆蓋掉前一個。若要同時保留多個處理行為,建議改用 addEventListener():
button.addEventListener('click', function () {
alert('這樣可以疊加多個事件處理器');
});
React 的 onClick 是什麼?
🔄 React 將事件處理「JSX 化」
在 React 中,我們不再使用傳統 HTML 方式來寫 UI,而是透過一種叫做 JSX 的語法來描述畫面結構。
JSX 看起來很像 HTML,但實際上是 JavaScript 的語法擴充,因此語法規則更接近 JavaScript 本身。
✅ 那 onClick 呢?
在 JSX 裡,React 為了讓事件處理的方式更自然、更符合 JavaScript 的語法規則,將原本 HTML 的小寫 onclick 改成了**駝峰式命名(camelCase)**的 onClick。
📌 簡單來說:React 的 onClick 是 HTML onclick 的進化版本,更貼近 JavaScript 的邏輯思維,讓開發更清晰可維護。
React 中的 onClick 範例
import React from 'react';
function App() {
const handleClick = () => {
alert("你點了 React 的按鈕!");
};
return ;
}
📌 說明:
handleClick 是一個事件處理函式,當使用者點擊按鈕時就會被呼叫。
onClick={handleClick} 是 JSX 的語法,代表「把這個函式綁定到這個按鈕的點擊事件上」。
注意:這裡不要加括號 (),否則會在畫面渲染時就立刻執行,而不是等使用者點擊才執行。
onClick vs onclick 有什麼不同?
以下是它們的對比表:
比較項目HTML 的 onclickReact 的 onClick大小寫小寫:onclick駝峰式:onClick(符合 JS 命名慣例)所屬範疇HTML 屬性 / DOM APIJSX 屬性 / React 語法綁定方式可直接寫程式碼字串或指派函式僅能傳入函式(通常是定義在組件內的函式)使用邏輯位置可能寫在 HTML 裡強制邏輯與畫面分離,函式寫在 JS 區塊中維護性差,邏輯與結構混在一起高,邏輯集中在 JS 中,程式架構清晰是否可傳參數可以,但需包一層匿名函式可以,搭配箭頭函式使用
React 傳遞參數範例:
有時候你會想在點擊時,傳遞特定參數給事件處理函式,這時可以用箭頭函式包起來:
function handleClick(name) {
alert(`Hello, ${name}!`);
}
⚠️ 小提醒:不要這樣寫!
// 錯誤 ❌:這樣會在一開始就執行,不是等待點擊才執行
✅ 正確:
// 正確 ✅:傳入函式參考,不會立即執行
// 或帶參數時這樣寫:
小結:你應該記住的幾件事
重點說明onclick 是什麼?HTML DOM 屬性,負責綁定點擊事件onClick 是什麼?React 中使用的事件屬性,結合 JSX 和函式邏輯使用哪個較好?在 React 專案中統一使用 onClick傳參數怎麼做?用匿名函式包住要執行的函式即可為什麼駝峰命名?因為 JSX 是 JavaScript 語法擴展,遵循 JavaScript 的命名慣例
如果你剛開始學 React 或想學 JavaScript 製作互動式網頁,那 onClick 是你絕對會用到的基本技能!多練習、多寫範例,你很快就能做出真正會「動」的網頁!