」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 了解 DOM 事件

了解 DOM 事件

發佈於2024-11-08
瀏覽:920

Understanding DOM Events

DOM 事件使網頁具有互動性。使用 DOM 事件可以實現頁面點擊或表單提交,它可以讓開發人員創建引人入勝的使用者體驗。

DOM 事件的一些範例包括使用者點擊滑鼠時、載入網頁時、載入圖片時、提交 HTML 表單時以及使用者按下某個鍵時。

在本文中,我們將簡化 DOM 事件中的關鍵概念並探討如何處理它們。

1. 新增事件監聽器

addEventListener,將事件處理程序附加到元素,它允許您定義元素如何對使用者與頁面的互動做出反應。

範例: 下面的程式碼新增了一個「click」事件,以便在點擊圖像時顯示雞尾酒詳細資訊。

`img.addEventListener('click', () => handleClick(cocktail));`

2. 查詢選擇器

querySelector,讓您可以使用類似 CSS 的選擇器來選擇元素。這是定位元素最通用的方法之一。

範例: 此程式碼正在網頁上建立一個可折疊部分。 document.querySelectorAll 正在選擇網頁上的所有 h3 元素並傳回所有符合元素的 NodeList。

const setupCollapsibles = () => {
  const collapsibles = document.querySelectorAll('.collapsible h3');

3. getElementById 和 getElementsByClassName

getElementById 透過其唯一 id 定位單一元素。

類似地,getElementsByClassName 選擇具有特定類別的所有元素並將它們作為集合傳回。

範例: 下面,getElementById 透過 HTML 文件中的 id 屬性尋找元素。

這裡使用它來存取特定的表單輸入、新名稱、新成分、新圖像、新配方並檢索它們的值。

這些值然後儲存在用 const 定義的 newCocktail 物件的屬性中。

這樣,當使用者提交表單來創建新的雞尾酒時,它就會以結構化的方式儲存在 newCocktail 物件中。

const newCocktail = {
      name: document.getElementById('new-name').value,
      ingredients: document.getElementById('new-ingredients').value.split(', '),
      image: document.getElementById('new-image').value,
      recipe: document.getElementById('new-recipe').value,
    }; 

4. DOM內容加載

DOMContentLoaded 事件可確保您的 JavaScript 僅在 DOM 完全載入後執行,從而防止在元素可用之前嘗試存取元素而發生錯誤。

範例: DOMContentLoaded 是初始 HTML 文件完全載入和解析後觸發的事件,無需等待樣式表、圖像或其他外部資源完全載入。

它確保 DOM 完全構建且可訪問,因此您可以安全地與 HTML 中的元素交互,例如添加事件偵聽器或操作 DOM。

在下面的程式碼中,瀏覽器告訴您該文件現在可用,用戶可以開始與其互動。

document.addEventListener('DOMContentLoaded', () => {
  setupEditListener();
  setupDeleteListener();
});

最後的註釋

DOM 事件是使網頁具有互動性並吸引使用者的基礎。透過瞭解和利用 addEventListener、querySelector、getElementById 和 getElementsByClassName 等核心方法,您可以建立回應點擊、表單提交等的動態使用者介面。

此外,DOMContentLoaded 事件可確保您的腳本僅在 DOM 完全載入後執行,從而防止潛在錯誤並確保流暢的使用者互動。

總之,DOM 事件允許您:

  • 使用 addEventListener 附加事件處理程序以實現響應式互動。

  • 透過querySelector或getElementById選擇元素,動態更新內容。

  • 根據使用者輸入管理事件觸發的操作,例如表單提交。

  • 使用 DOMContentLoaded 確保您的腳本在正確的時間運行。

透過這些技術,您可以將靜態網頁轉變為增強使用者參與度的互動體驗。

版本聲明 本文轉載於:https://dev.to/namimai/understanding-dom-events-2bb2?1如有侵犯,請聯絡[email protected]刪除
最新教學 更多>
  • 如何檢查 Chrome 和 Firefox 中的元素?
    如何檢查 Chrome 和 Firefox 中的元素?
    您有没有想过一个制作精美的网站背后有哪些元素?了解如何检查 Chrome 和 Firefox 中的元素。  每个视觉上令人惊叹的网页都有复杂的 HTML、CSS 和 JavaScript 代码在后端运行。使用名为 Inspect Element 的便捷开发工具,您可以在流行的网络浏览器上检查 HTM...
    程式設計 發佈於2024-11-09
  • 為什麼在 C++ 中設定靜態欄位時出現「無法解析的外部符號」錯誤?
    為什麼在 C++ 中設定靜態欄位時出現「無法解析的外部符號」錯誤?
    靜態物件欄位的無法解析的外部符號本文調查了嘗試設定時遇到的錯誤訊息「error LNK2001:無法解析的外部符號”主方法中的類別中的靜態字段。 在提供的程式碼片段中,類別中靜態欄位「a」的宣告「B」出現在類別定義本身內。但是,根據 C 標準,此類聲明不被視為定義。對於靜態資料成員,正確的定義必須出...
    程式設計 發佈於2024-11-09
  • 如何在 PHP 中高效去除小數中的尾隨零​​?
    如何在 PHP 中高效去除小數中的尾隨零​​?
    在 PHP 中刪除小數中的尾隨零​​在 PHP 中,從小數中刪除尾隨零是一項常見任務。考慮以下場景:您有一組數字,例如 125.00、966.70 和 844.011,您希望顯示這些數字,但不包含不必要的零數字。 快速且優化的解決方案為了有效地完成此任務,您可以採用簡單而有效的解決方案,將數字添加到...
    程式設計 發佈於2024-11-09
  • 如何在 Internet Explorer 8 中使用 nth-child() 在表中實作斑馬條紋?
    如何在 Internet Explorer 8 中使用 nth-child() 在表中實作斑馬條紋?
    Internet Explorer 8 中對nth-child() 的CSS 支援在現代瀏覽器中,CSS nth-child() 元素通常是用於在表格中實現斑馬條紋效果。然而,Internet Explorer 8 中明顯缺少此功能。以下是解決此限制的方法:Polyfill 方法:Selectivi...
    程式設計 發佈於2024-11-09
  • 在 JavaScript 中使用「setTimeout」時如何使用「this」保留上下文?
    在 JavaScript 中使用「setTimeout」時如何使用「this」保留上下文?
    在JavaScript 中使用setTimeout 並透過this 保存上下文在JavaScript 中使用setTimeout 函數時,必須了解它如何處理這的背景。當在超時回調中呼叫不同上下文中定義的方法時,這一點變得特別重要。 在提供的程式碼片段中,方法函數呼叫 method2,該方法根據傳遞的...
    程式設計 發佈於2024-11-09
  • 如何在 C++ 中安全地啟動執行檔:為什麼 CreateProcess() 是您的最佳選擇?
    如何在 C++ 中安全地啟動執行檔:為什麼 CreateProcess() 是您的最佳選擇?
    利用CreateProcess() 啟動可執行檔在本指南中,我們將探討如何從另一個C 執行檔中開啟執行檔(.exe )。 使用 system() 的陷阱在深入研究解決方案之前,強調使用 system() 函數的危險至關重要。 System() 有幾個缺點:它很糟糕,可能會減慢程式速度。 它會破壞安全...
    程式設計 發佈於2024-11-09
  • 使用這些運算符增強您的打字稿遊戲
    使用這些運算符增強您的打字稿遊戲
    空值合併運算子 (??) ?? 運算子用於在處理 null 或未定義時提供預設值。它檢查左側是否為 null 或未定義,如果是,則傳回右側值。 let value = null; let defaultValue = "DefaultValue"; let result = value ?? d...
    程式設計 發佈於2024-11-09
  • 最佳 jsGames 遊戲投票開始了!
    最佳 jsGames 遊戲投票開始了!
    今年的 js13kGames 競賽帶來了 189 款新的小型受限遊戲 - 恭喜每一位成功提交參賽作品的人!現在是時候投票並選出第13屆週年紀念版的獲勝者。 線上投票從9月15日到10月4日進行,獲獎者名單於10月5日公佈。如果您參與並提交了參賽作品,現在您可以評判其他人的遊戲並為他們提供投票。這意...
    程式設計 發佈於2024-11-09
  • 如何在 PHP 中按日期對物件數組進行排序?
    如何在 PHP 中按日期對物件數組進行排序?
    按日期對物件陣列進行排序在PHP 中,我們經常遇到需要按特定屬性對物件陣列進行排序的情況,例如日期欄位。這使我們能夠按時間順序顯示或操作資料。 按日期重新排列物件考慮以下物件數組,其中每個物件代表一條帶有日期屬性:$array = [ 495 => (object)['date' =&...
    程式設計 發佈於2024-11-09
  • 如何使用 document.querySelectorAll 正確循環選定的元素?
    如何使用 document.querySelectorAll 正確循環選定的元素?
    使用 document.querySelectorAll 循環選定的元素在 Web 開發中,循環選定的元素通常是必要的。 document.querySelectorAll 提供了一個表示所選元素的類似陣列的物件。但是,如果直接在 NodeList 上執行迭代,可能會出現問題,導致輸出中出現其他項目...
    程式設計 發佈於2024-11-09
  • 如何使用 jQuery 偵測鍵盤 Enter 按下:綜合指南
    如何使用 jQuery 偵測鍵盤 Enter 按下:綜合指南
    使用 jQuery 檢測鍵盤 Enter 按下:綜合指南檢測使用者輸入對於建立互動式 Web 應用程式至關重要。一項常見任務是捕捉 Enter 按鍵。本文探討如何使用 jQuery 無縫地實現這一點,並解決了瀏覽器相容性的問題。 jQuery 解決方案jQuery 提供了一個名為 keypress(...
    程式設計 發佈於2024-11-09
  • 提高 Spring Boot 應用程式的效能 - 第二部分
    提高 Spring Boot 應用程式的效能 - 第二部分
    在本文的第一部分中,我们学习了如何提高应用程序的性能,将 Tomcat 替换为 Undertow,即高性能 Web 服务器,除了启用和配置数据压缩之外,还可以减少通过网络传输的 HTTP 响应的大小。 现在,我们将讨论如何在持久化部分提高Spring Boot应用程序的性能,但首先我们需要了解什么是...
    程式設計 發佈於2024-11-09
  • 如何在 Golang 中實現真正的並行:Goroutines、死鎖和通道?
    如何在 Golang 中實現真正的並行:Goroutines、死鎖和通道?
    Golang 中的平行處理:利用並發來提高效能考慮提供的程式碼,其中展示了 Goroutines 的並行處理。然而,它提出了關於並發執行的潛力以及實現並行性的最佳方法的問題。 dowork的同時執行dowork並行執行的前提是不保證。雖然 goroutine 提供了輕量級的並發機制,但作業系統排程器...
    程式設計 發佈於2024-11-09
  • 在建構函式中分配原型方法是一個好主意嗎?
    在建構函式中分配原型方法是一個好主意嗎?
    在建構函數中分配原型方法:潛在的缺點和範圍問題序言本文深入研究了建構原型方法時的風格偏好困境JavaScript 物件。首選方法是直接在建構函數函數體內分配方法,這與在構造函數外部定義方法的傳統方法形成鮮明對比。雖然首選方法可能看起來美觀,但問題出現了:這種技術是否存在任何固有的缺點或潛在的範圍問題...
    程式設計 發佈於2024-11-09
  • 為什麼 useState 在嚴格模式下渲染元件兩次?
    為什麼 useState 在嚴格模式下渲染元件兩次?
    理解useState中的雙重渲染在React中,useState鉤子通常用於管理元件狀態。但是,在某些條件下,您可能會注意到使用 useState 呈現的元件對於每次狀態更新都會呈現兩次。這種行為讓許多未啟用嚴格模式的開發人員感到困惑。為什麼會出現這種情況? 嚴格模式的作用與未啟用嚴格模式的假設相反...
    程式設計 發佈於2024-11-09

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3