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

了解 DOM 事件

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

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]刪除
最新教學 更多>
  • 如何使用替換指令在GO MOD中解析模塊路徑差異?
    如何使用替換指令在GO MOD中解析模塊路徑差異?
    在使用GO MOD時,在GO MOD 中克服模塊路徑差異時,可能會遇到衝突,其中3個Party Package將另一個PAXPANCE帶有導入式套件之間的另一個軟件包,並在導入式套件之間導入另一個軟件包。如迴聲消息所證明的那樣: go.etcd.io/bbolt [&&&&&&&&&&&&&&&&...
    程式設計 發佈於2025-07-03
  • FastAPI自定義404頁面創建指南
    FastAPI自定義404頁面創建指南
    response = await call_next(request) if response.status_code == 404: return RedirectResponse("https://fastapi.tiangolo.com") else: ...
    程式設計 發佈於2025-07-03
  • 如何使用Python理解有效地創建字典?
    如何使用Python理解有效地創建字典?
    在python中,詞典綜合提供了一種生成新詞典的簡潔方法。儘管它們與列表綜合相似,但存在一些顯著差異。 與問題所暗示的不同,您無法為鑰匙創建字典理解。您必須明確指定鍵和值。 For example:d = {n: n**2 for n in range(5)}This creates a dict...
    程式設計 發佈於2025-07-03
  • 如何使用Java.net.urlConnection和Multipart/form-data編碼使用其他參數上傳文件?
    如何使用Java.net.urlConnection和Multipart/form-data編碼使用其他參數上傳文件?
    使用http request 上傳文件上傳到http server,同時也提交其他參數,java.net.net.urlconnection and Multipart/form-data Encoding是普遍的。 Here's a breakdown of the process:Mu...
    程式設計 發佈於2025-07-03
  • HTML格式標籤
    HTML格式標籤
    HTML 格式化元素 **HTML Formatting is a process of formatting text for better look and feel. HTML provides us ability to format text without us...
    程式設計 發佈於2025-07-03
  • 如何使用PHP將斑點(圖像)正確插入MySQL?
    如何使用PHP將斑點(圖像)正確插入MySQL?
    essue VALUES('$this->image_id','file_get_contents($tmp_image)')";This code builds a string in PHP, but the function call fil...
    程式設計 發佈於2025-07-03
  • 如何使用Python有效地以相反順序讀取大型文件?
    如何使用Python有效地以相反順序讀取大型文件?
    在python 中,如果您使用一個大文件,並且需要從最後一行讀取其內容,則在第一行到第一行,Python的內置功能可能不合適。這是解決此任務的有效解決方案:反向行讀取器生成器 == ord('\ n'): 緩衝區=緩衝區[:-1] ...
    程式設計 發佈於2025-07-03
  • 如何使用Depimal.parse()中的指數表示法中的數字?
    如何使用Depimal.parse()中的指數表示法中的數字?
    在嘗試使用Decimal.parse(“ 1.2345e-02”中的指數符號表示法表示的字符串時,您可能會遇到錯誤。這是因為默認解析方法無法識別指數符號。 成功解析這樣的字符串,您需要明確指定它代表浮點數。您可以使用numbersTyles.Float樣式進行此操作,如下所示:[&& && && ...
    程式設計 發佈於2025-07-03
  • C++成員函數指針正確傳遞方法
    C++成員函數指針正確傳遞方法
    如何將成員函數置於c 的函數時,接受成員函數指針的函數時,必須同時提供對象的指針,並提供指針和指針到函數。需要具有一定簽名的功能指針。要通過成員函數,您需要同時提供對象指針(此)和成員函數指針。這可以通過修改Menubutton :: SetButton()(如下所示:[&& && && &&華)...
    程式設計 發佈於2025-07-03
  • 如何有效地選擇熊貓數據框中的列?
    如何有效地選擇熊貓數據框中的列?
    在處理數據操作任務時,在Pandas DataFrames 中選擇列時,選擇特定列的必要條件是必要的。在Pandas中,選擇列的各種選項。 選項1:使用列名 如果已知列索引,請使用ILOC函數選擇它們。請注意,python索引基於零。 df1 = df.iloc [:,0:2]#使用索引0和1 ...
    程式設計 發佈於2025-07-03
  • 編譯器報錯“usr/bin/ld: cannot find -l”解決方法
    編譯器報錯“usr/bin/ld: cannot find -l”解決方法
    錯誤:“ usr/bin/ld:找不到-l “ 此錯誤表明鏈接器在鏈接您的可執行文件時無法找到指定的庫。為了解決此問題,我們將深入研究如何指定庫路徑並將鏈接引導到正確位置的詳細信息。 添加庫搜索路徑的一個可能的原因是,此錯誤是您的makefile中缺少庫搜索路徑。要解決它,您可以在鏈接器命令中添...
    程式設計 發佈於2025-07-03
  • Java的Map.Entry和SimpleEntry如何簡化鍵值對管理?
    Java的Map.Entry和SimpleEntry如何簡化鍵值對管理?
    A Comprehensive Collection for Value Pairs: Introducing Java's Map.Entry and SimpleEntryIn Java, when defining a collection where each element com...
    程式設計 發佈於2025-07-03
  • C++中如何將獨占指針作為函數或構造函數參數傳遞?
    C++中如何將獨占指針作為函數或構造函數參數傳遞?
    在構造函數和函數中將唯一的指數管理為參數 unique pointers( unique_ptr [2啟示。通過值: base(std :: simelor_ptr n) :next(std :: move(n)){} 此方法將唯一指針的所有權轉移到函數/對象。指針的內容被移至功能中,在操作...
    程式設計 發佈於2025-07-03
  • 如何正確使用與PDO參數的查詢一樣?
    如何正確使用與PDO參數的查詢一樣?
    在pdo 中使用類似QUERIES在PDO中的Queries時,您可能會遇到類似疑問中描述的問題:此查詢也可能不會返回結果,即使$ var1和$ var2包含有效的搜索詞。錯誤在於不正確包含%符號。 通過將變量包含在$ params數組中的%符號中,您確保將%字符正確替換到查詢中。沒有此修改,PD...
    程式設計 發佈於2025-07-03
  • Java中假喚醒真的會發生嗎?
    Java中假喚醒真的會發生嗎?
    在Java中的浪費喚醒:真實性或神話? 在Java同步中偽裝喚醒的概念已經是討論的主題。儘管存在這種行為的潛力,但問題仍然存在:它們實際上是在實踐中發生的嗎? Linux的喚醒機制根據Wikipedia關於偽造喚醒的文章,linux實現了pthread_cond_wait()功能的Linux實現,...
    程式設計 發佈於2025-07-03

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

Copyright© 2022 湘ICP备2022001581号-3