日韩欧美国产精品免费一二-日韩欧美国产精品亚洲二区-日韩欧美国产精品专区-日韩欧美国产另-日韩欧美国产免费看-日韩欧美国产免费看清风阁

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

JavaScript 21天入門:事件處理(Events)

admin
2024年10月22日 21:57 本文熱度 1307

簡單來說,事件就是用戶或?yàn)g覽器執(zhí)行的某些動作,比如說點(diǎn)擊按鈕、移動鼠標(biāo)、按下鍵盤等等。

通過捕獲事件之后處理事件,可以讓網(wǎng)頁對這些動作做出響應(yīng),進(jìn)而實(shí)現(xiàn)更豐富的交互效果。

事件的類型

JavaScript 中事件的類型非常多,比較常用且典型的有以下幾種:

  • 鼠標(biāo)事件類:如 click(點(diǎn)擊)、dblclick(雙擊)、mouseover(鼠標(biāo)移入)、mouseout(鼠標(biāo)移出)等。

  • 鍵盤事件類:如 keydown(按下鍵)、keyup(釋放鍵)等。

  • 表單事件類:如 submit(提交表單)、change(表單元素值改變)等。

  • 窗口事件類:如 load(頁面加載完成)、resize(窗口大小改變)等。

事件監(jiān)聽

不用擔(dān)心事件太多,因?yàn)樗惺录奶幚矶伎梢酝ㄟ^ addEventListener 方法來添加事件監(jiān)聽器。

這個方法有三個參數(shù):事件類型、事件處理函數(shù)和一個布爾值(表示是否在捕獲階段處理事件)。

// 添加事件監(jiān)聽器 document.getElementById('myButton').addEventListener(   'click',   function (event) {     alert('按鈕被點(diǎn)擊了!');   },   false ); 

在上面的代碼中,我們給一個按鈕添加了 click 事件的監(jiān)聽器。

當(dāng)按鈕被點(diǎn)擊時,會彈出一個提示框。

第三個參數(shù) false 表示在事件冒泡階段處理事件。

事件冒泡

事件冒泡指的是當(dāng)一個事件發(fā)生在某個元素上時,這個事件會從最內(nèi)層的目標(biāo)元素開始,一層一層向上傳遞,直到最外層的元素。

這個過程就像水泡從水底冒到水面一樣,因此被稱為“事件冒泡”。

假設(shè)有一個嵌套的 HTML 結(jié)構(gòu),如下所示:

<div id="outer">   <div id="inner">     <button id="myButton">點(diǎn)擊我</button>   </div> </div> 

當(dāng)我們點(diǎn)擊按鈕時,click 事件會首先在按鈕元素上觸發(fā),然后依次向上傳遞到 inner 和 outer 元素,最后到達(dá) document 對象。這就是事件冒泡的過程。

事件冒泡的示例

可以通過添加事件監(jiān)聽器來觀察事件冒泡的過程:

<script>   document.getElementById('outer').addEventListener('click', function () {     console.log('外層 div 被點(diǎn)擊');   });    document.getElementById('inner').addEventListener('click', function () {     console.log('內(nèi)層 div 被點(diǎn)擊');   });    document.getElementById('myButton').addEventListener('click', function () {     console.log('按鈕被點(diǎn)擊');   }); </script> 

在這個示例中,當(dāng)我們點(diǎn)擊按鈕時,控制臺會依次輸出:

按鈕被點(diǎn)擊 內(nèi)層 div 被點(diǎn)擊 外層 div 被點(diǎn)擊 

這說明事件從按鈕開始,依次向上傳遞到內(nèi)層 div 和外層 div,也就是事件冒泡的過程。

阻止事件冒泡

當(dāng)不希望事件冒泡到上層元素時,可以使用事件對象的 stopPropagation 方法來阻止事件冒泡:

document.getElementById('myButton').addEventListener('click', function (event) {   event.stopPropagation();   console.log('按鈕被點(diǎn)擊'); }); 

在按鈕的點(diǎn)擊事件處理函數(shù)中調(diào)用了 event.stopPropagation 方法,這樣點(diǎn)擊按鈕時,事件就不會冒泡到內(nèi)層和外層的 div 元素了。

事件捕獲

除了事件冒泡,還有一個相反的過程叫做事件捕獲。

事件捕獲是指事件從最外層的元素開始,一層一層向內(nèi)傳遞,直到目標(biāo)元素。

我們可以通過在 addEventListener 方法的第三個參數(shù)中傳遞 true 來啟用事件捕獲:

document.getElementById('outer').addEventListener(   'click',   function () {     console.log('外層 div 被點(diǎn)擊');   },   true );  document.getElementById('inner').addEventListener(   'click',   function () {     console.log('內(nèi)層 div 被點(diǎn)擊');   },   true );  document.getElementById('myButton').addEventListener(   'click',   function () {     console.log('按鈕被點(diǎn)擊');   },   true ); 

在這個示例中,當(dāng)我們點(diǎn)擊按鈕時,控制臺會依次輸出:

外層 div 被點(diǎn)擊 內(nèi)層 div 被點(diǎn)擊 按鈕被點(diǎn)擊 

移除事件監(jiān)聽

可以使用 removeEventListener 方法來實(shí)現(xiàn)移除事件監(jiān)聽,該方法的參數(shù)與 addEventListener 方法相同。

// 定義事件處理函數(shù) function handleClick(event) {   alert('按鈕被點(diǎn)擊了!'); }  // 添加事件監(jiān)聽器 document   .getElementById('myButton')   .addEventListener('click', handleClick, false);  // 移除事件監(jiān)聽器 document   .getElementById('myButton')   .removeEventListener('click', handleClick, false); 

事件處理

如前面展開的描述,事件處理主要分為兩個階段:事件捕獲和事件冒泡。

  • 事件捕獲:事件從最外層的元素開始,一層一層向內(nèi)傳遞,直到目標(biāo)元素。

  • 事件冒泡:事件從目標(biāo)元素開始,一層一層向外傳遞,直到最外層的元素。

事件對象

當(dāng)事件發(fā)生時,瀏覽器會創(chuàng)建一個事件對象,并將其傳遞給事件處理函數(shù)。

通過這個事件對象,我們可以獲取事件的詳細(xì)信息,比如事件類型、目標(biāo)元素、鼠標(biāo)位置等。

document.getElementById('myButton').addEventListener('click', function (event) {   console.log('事件類型:' + event.type);   console.log('目標(biāo)元素:' + event.target);   console.log('鼠標(biāo)位置:' + event.clientX + ', ' + event.clientY); }); 

通過事件對象 event 可以獲取事件的類型、目標(biāo)元素和鼠標(biāo)位置等信息。

事件處理的示例

來看一個完整的如何處理不同類型的事件的示例:

這個頁面有一個按鈕,一個輸入框。

<!DOCTYPE html> <html lang="en">   <head>     <meta charset="UTF-8" />     <title>事件處理示例</title>   </head>   <body>     <button id="myButton">點(diǎn)擊我</button>     <input type="text" id="myInput" placeholder="輸入文字" />     <script>       // 處理點(diǎn)擊事件       document         .getElementById('myButton')         .addEventListener('click', function () {           alert('按鈕被點(diǎn)擊了!');         });        // 處理鍵盤事件       document         .getElementById('myInput')         .addEventListener('keydown', function (event) {           console.log('按下了鍵:' + event.key);         });        // 處理表單事件       document         .getElementById('myInput')         .addEventListener('change', function () {           console.log('輸入框的值改變了:' + this.value);         });     </script>   </body> </html> 

分別處理了按鈕的點(diǎn)擊事件、輸入框的鍵盤事件和輸入框的值改變事件。

現(xiàn)在你也可以開始自己試試事件處理了!

總結(jié)

  • ?? 事件就是用戶或?yàn)g覽器執(zhí)行的某些動作,比如說點(diǎn)擊按鈕、移動鼠標(biāo)、按下鍵盤等等。

  • ?? 所有事件的處理都可以通過 addEventListener 方法來添加事件監(jiān)聽器。

  • ?? 事件處理主要分為兩個階段:事件捕獲和事件冒泡。


該文章在 2024/10/23 9:41:28 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉儲管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 2025国产精品视频免费 | 日韩一区二区超清视频 | 老牛影视文化传媒有限公司官方 | 日韩精品电影一区 | 亚洲欧美中文日韩v在线观看 | 正版高清视频在线观看 | 国产精品va在线播放 | 欧美激情欧美狂野欧美精品免费 | 日韩精品一区二区三区中文 | 国产又粗又猛又大爽又黄的视频 | 国产一区二区三区水蜜桃 | 亚洲色熟女图激情另类图区 | 国产在线一区二区三区不卡在线 | 717午夜伦伦电影理论片 | 欧美人成在线观看网站高清 | 自拍偷亚洲成在线观看 | 国产91精品老熟女泻火 | 亚洲日本一线产区和二线产 | 国产一区二区三区四区免费观看 | 亚洲欧美v国产 | 日日噜噜| 日本免费亚洲视频 | 好看的电视剧免费在线观看 | 又粗又硬又大又黄又爽的免 | 男女性潮高清免费网站 | 亚洲大片精品免费在线 | 欧亚一级毛 | 性生交大全免费看 | 永久免费精品影视网站 | 免费国人国产免费看片 | 日本一区二区三区四区不卡 | 星空传媒国产剧 | 国产精品一品道加勒比 | 精品不卡一区二区 | 在线天堂资源www在线中文 | 最近中文字幕在线观看 | 欧美大片欧美激情性色a∨在线 | 91国内精品线免费播放 | 国产亚洲精品自在在线观看 | 国产精偷伦视频在线观看 | 23部人禽伦|