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

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

主站蜘蛛池模板: 国产日韩中文字幕 | 中字幕一区二区三区乱 | 国产精品无内丝袜高跟鞋 | 欧美人与动性行为网站免费 | 成人影院在线入口 | 综合五月激情二区视频 | 中文字幕国产第1页直播在线 | 久拍国产在线观看 | 亚洲高清中文字幕综合网 | 中文字幕在线播放视频 | 老师喂我乳我脱她内裤 | 日本免费人成视频播放 | 精品国产一区二区三区四不卡在线 | 亚洲熟女乱色一区二区三区 | 日韩欧美三级理论在线观看 | 日本乱子伦一 | 欧美日韩国产亚洲 | 免费高清欧 | 日本三级免费网站 | 国产精品三区四区 | 国产精品激情偷乱一区二区∴ | 国产精品九九视频 | 色老板在线精品免费视频 | 国产精品视频一区二区三区 | 国产激情免费视频在线观看 | 日韩精品a在线视频 | 国产精品一区二区手机在线观看 | 日韩精品午夜视频一区二区三区 | 日本一区二区在线视频 | 老司机午夜福利 | 乱伦国产欧美三级 | 精品美女 | 国产日韩精品一区二区在线观看 | 巨大乳bbwsex中国 | 欧美日韩中文字幕在线一区二区 | 最好看的中文2025 | 银杏视频在线官网 | 日本中文字幕高清7 | 精品福利一区二区在线观看 | 国产精品99精品 | 国产一区二区在线观看动漫 |