JS學習筆記#10 | JavaScript 事件處理與阻止

更新於 2024/12/21閱讀時間約 4 分鐘


JavaScript 的事件處理是網頁開發中的重要部分,本文將介紹兩個常用的方法:event.stopPropagation()event.preventDefault(),並簡要說明它們的作用與使用情境。

事件物件 event

當網頁觸發某個事件時,瀏覽器會自動生成一個事件物件,稱為 event,此物件包含事件的相關資訊,如觸發事件的 DOM 元素和觸發原因等。


1. event.stopPropagation()

背景知識:事件冒泡

當一個 DOM 元素的事件被觸發後,該事件會沿著 DOM 樹從內到外傳播,這種現象稱為「事件冒泡」。

範例: 假設我們有以下結構:

<div id="outer">
<div id="middle">
<button id="inner">點我</button>
</div>
</div>

若為三個元素(outermiddleinner)分別設置 click 事件,當點擊 inner 時,外層的 middleouter 事件也會被觸發。

解決方法:阻止事件冒泡

使用 event.stopPropagation() 可以有效地阻止事件冒泡,僅觸發目標元素的事件,而不會傳播到外層元素。

範例:

document.getElementById('inner').addEventListener('click', (event) => {
event.stopPropagation();
console.log('僅執行內層按鈕事件');
});

效果:點擊 inner 按鈕只觸發 innerclick 事件。


2. event.preventDefault()

功能:取消事件的預設行為

某些 DOM 元素(如 <a> 超連結或 <form> 表單)會有預設行為。例如,點擊 <a> 超連結會跳轉到指定的網址。若不希望執行此預設行為,可使用 event.preventDefault()

範例:

HTML:

<a id="clickMe" href="https://example.com">跳轉到 Example</a>

JavaScript:

document.getElementById('clickMe').addEventListener('click', (event) => {
event.preventDefault();
console.log('阻止跳轉,執行自定義邏輯');
});

效果:點擊連結後,頁面不會跳轉,但會執行 console.log


某些情境下:return false 的作用

在某些情境下,我們會使用 return false 來取消事件的執行。但需注意:

  • return false 只能取消 DOM 元素的預設行為。
  • 無法阻止事件冒泡。

範例:

document.getElementById('clickMe').onclick = function () {
console.log('僅取消預設行為,無法阻止冒泡');
return false;
};

總結

  • event.stopPropagation() : 阻止事件冒泡,不希望事件傳播到父層元素時。
  • event.preventDefault() : 取消事件的預設行為,禁止預設功能(如連結跳轉、表單提交)時。
  • return false : 僅取消預設行為,無法阻止冒泡,用於簡單的事件處理。


avatar-img
0會員
10內容數
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
koko的沙龍 的其他內容
時間複雜度是指一個演算法在執行時所需要的時間,通常是根據輸入數據的大小𝑛來評估。時間複雜度的高低直接影響演算法在面對大量數據時的效率,因此理解時間複雜度有助於評估不同解法的性能。
在 JavaScript 中,資料型別主要分為原始型(Primitive Type)和引用型(Reference Type)。
陣列(Array)是 JavaScript 中用來儲存一組有序資料的集合。 陣列可以包含各種資料型別的值,例如數字、字串、布林值,甚至其他陣列或物件。了解陣列的基本操作是編寫高效 JavaScript 程式碼的重要基礎。
函式(Function)是 JavaScript 中用來完成特定任務的可重複執行的程式碼片段。 函式可以接受輸入(參數),進行處理,並回傳結果。 主要的函式建立方式有函式宣告、函式表達式、和箭頭函式。
if 語句是用來根據條件執行特定程式碼的一種控制流程語句。在 JavaScript 中,if 語句可以幫助我們做出決策,當條件為 true 時執行一段代碼,否則忽略。
在 JavaScript 中,邏輯運算子和比較運算子是用於條件判斷的重要工具。 它們常被用來進行邏輯運算和比較數值或變數,進一步決定程式的執行流程。
時間複雜度是指一個演算法在執行時所需要的時間,通常是根據輸入數據的大小𝑛來評估。時間複雜度的高低直接影響演算法在面對大量數據時的效率,因此理解時間複雜度有助於評估不同解法的性能。
在 JavaScript 中,資料型別主要分為原始型(Primitive Type)和引用型(Reference Type)。
陣列(Array)是 JavaScript 中用來儲存一組有序資料的集合。 陣列可以包含各種資料型別的值,例如數字、字串、布林值,甚至其他陣列或物件。了解陣列的基本操作是編寫高效 JavaScript 程式碼的重要基礎。
函式(Function)是 JavaScript 中用來完成特定任務的可重複執行的程式碼片段。 函式可以接受輸入(參數),進行處理,並回傳結果。 主要的函式建立方式有函式宣告、函式表達式、和箭頭函式。
if 語句是用來根據條件執行特定程式碼的一種控制流程語句。在 JavaScript 中,if 語句可以幫助我們做出決策,當條件為 true 時執行一段代碼,否則忽略。
在 JavaScript 中,邏輯運算子和比較運算子是用於條件判斷的重要工具。 它們常被用來進行邏輯運算和比較數值或變數,進一步決定程式的執行流程。
你可能也想看
Google News 追蹤
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
情報操作者為了限制抗爭現場的資訊流通及降低臉孔給其他民眾帶來的感染力,會用各種方式提出建議(例如不要拍臉)使人們不要拍照、減少拍照、自行遮臉。但其所屬勢力或未來可統治的機構早就全程蒐證錄影。 為避免錯誤的炎上先建立防火牆ps1 拍不拍臉的議題值得多多討論,目的、對像、合理性、最後是否能解決一開始要
Thumbnail
如果遇到有人要你刪影片時,請留意其理由的正當性。 有時是避免重要細節被發現,有時是避免混入的破壞份子被識別,有時是要避免可以跟謊言對抗的真相被看到,有時是打擊熱門影片達到輿論影響力的限縮。 最常用的第一個錯誤理由是,違法行為會被警察發現。事實上(幾乎)所有直播都會被警察、中共、好事者備份。
Thumbnail
在現實生活中,充滿的警報及安全措施,總會設個安全線在那,若觸碰到底線時則會有警報響起。 在Python也有類似的作法,如果希望在某個條件達到時,就拉起警報不要讓程式繼續進行下去,就適合使用raise 這種機制讓開發者能夠在程序執行時檢測到不正確的條件,然後通過引發異常停止程序的執行或通知使用者。
描述我所瞭解的 Web 攻擊技術 何謂網路攻擊? 駭客透過各種系統漏洞或惡意程式,搭配許多技術和工具進行攻擊。目標是要在企業或個人電腦網路中損害、取得控制權或存取重要的文件和系統。 例如: XSS(Cross-Site Scripting,跨站腳本攻擊/跨網站指令碼):指網路罪犯透過存在安全
Thumbnail
談了許多網路安全的議題,提醒民眾要注意哪些事情,建構哪些網路安全思維,讓我們可以降低踏入詐騙陷阱的風險。但除了民眾本身要不斷學習、提升防詐意識外,是不是還有其他方面的作法呢? 本文就來聊聊在企業端可以做些什麼。 要打造一個密不可破的防護網,企業端就不能夠缺席。 舉幾個例子讓大家知道。
意外事件發生通常表示系統運作異常,這時應積極排除障礙,但我們通常是製造更多困難。 外力入侵傷害學童,通令各校裝設電子圍籬;學生攜械傷害同學,考慮入校搜身與檢查書包......,這些「即時反應」的作法,都會讓師生更難處,進一步破壞校園互信互動系統,讓校園變得更危疑不安。
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
情報操作者為了限制抗爭現場的資訊流通及降低臉孔給其他民眾帶來的感染力,會用各種方式提出建議(例如不要拍臉)使人們不要拍照、減少拍照、自行遮臉。但其所屬勢力或未來可統治的機構早就全程蒐證錄影。 為避免錯誤的炎上先建立防火牆ps1 拍不拍臉的議題值得多多討論,目的、對像、合理性、最後是否能解決一開始要
Thumbnail
如果遇到有人要你刪影片時,請留意其理由的正當性。 有時是避免重要細節被發現,有時是避免混入的破壞份子被識別,有時是要避免可以跟謊言對抗的真相被看到,有時是打擊熱門影片達到輿論影響力的限縮。 最常用的第一個錯誤理由是,違法行為會被警察發現。事實上(幾乎)所有直播都會被警察、中共、好事者備份。
Thumbnail
在現實生活中,充滿的警報及安全措施,總會設個安全線在那,若觸碰到底線時則會有警報響起。 在Python也有類似的作法,如果希望在某個條件達到時,就拉起警報不要讓程式繼續進行下去,就適合使用raise 這種機制讓開發者能夠在程序執行時檢測到不正確的條件,然後通過引發異常停止程序的執行或通知使用者。
描述我所瞭解的 Web 攻擊技術 何謂網路攻擊? 駭客透過各種系統漏洞或惡意程式,搭配許多技術和工具進行攻擊。目標是要在企業或個人電腦網路中損害、取得控制權或存取重要的文件和系統。 例如: XSS(Cross-Site Scripting,跨站腳本攻擊/跨網站指令碼):指網路罪犯透過存在安全
Thumbnail
談了許多網路安全的議題,提醒民眾要注意哪些事情,建構哪些網路安全思維,讓我們可以降低踏入詐騙陷阱的風險。但除了民眾本身要不斷學習、提升防詐意識外,是不是還有其他方面的作法呢? 本文就來聊聊在企業端可以做些什麼。 要打造一個密不可破的防護網,企業端就不能夠缺席。 舉幾個例子讓大家知道。
意外事件發生通常表示系統運作異常,這時應積極排除障礙,但我們通常是製造更多困難。 外力入侵傷害學童,通令各校裝設電子圍籬;學生攜械傷害同學,考慮入校搜身與檢查書包......,這些「即時反應」的作法,都會讓師生更難處,進一步破壞校園互信互動系統,讓校園變得更危疑不安。