JS-第十九天-事件(一)

一、事件基礎概念

1.1 事件三要素

  • 事件源:觸發事件的元素

  • 事件類型:事件的種類(如click、mouseover等)

  • 事件處理程序:響應事件的函數

1.2 事件流機制

事件傳播分為三個階段:

  1. 捕獲階段:事件從頂層開始,經過所有祖先節點,直至觸發目標節點

  2. 目標階段:事件到達目標節點并觸發

  3. 冒泡階段:事件從目標節點開始,經過所有祖先節點,直至頂層Window對象

二、事件綁定方式

2.1 三種綁定方法對比

方法

語法添加數量移除方式特點
HTML行內onclick="console.log('點擊')"1個直接刪除屬性簡單但耦合度高
DOM屬性ele.onclick = function(){}1個ele.onclick = null簡單,但只能綁定一個
addEventListenerele.addEventListener(event, fn, options)多個removeEventListener()推薦,功能最強大

2.2 推薦使用 addEventListener

// 添加事件監聽器
element.addEventListener('click', function(event) {console.log('點擊事件');
}, false);
?
// 移除事件監聽器
element.removeEventListener('click', handlerFunction);

三、常用事件類型

3.1 鼠標事件

  • click - 單擊

  • dblclick - 雙擊

  • contextmenu - 右鍵菜單

  • mouseover/mouseout - 鼠標移入/移出(會冒泡)

  • mouseenter/mouseleave - 鼠標進入/離開(不冒泡)

  • mousedown/mouseup - 鼠標按下/釋放

  • mousemove - 鼠標移動

重要區別mouseenter/mouseleave 不會冒泡,不受子元素影響;mouseover/mouseout 會冒泡,受子元素影響。

  <script>//  click 鼠標點擊//  dblclick 鼠標雙擊document.ondblclick = function () {console.log('鼠標雙擊');}// contextmenu 右擊菜單document.oncontextmenu = function () {console.log('右鍵');document.oncontextmenu('.right').style.display = 'block'// 事件原本的功能【阻止默認行為】event.preventDefault()}// mouseover/mouseout 鼠標移入/移出(會冒泡)document.querySelector('.box').onmouseover = function () {console.log('over鼠標滑上去');}document.querySelector('.box').onmouseout = function () {console.log('out鼠標滑出去');}// mouseenter/mouseleave 鼠標移入/移出(不會冒泡)document.querySelector('.box').onmouseenter = function () {console.log('enter鼠標滑走');}document.querySelector('.box').onmouseleave = function () {console.log('leave鼠標滑離開');}// mousedown/mouseup 鼠標按下/釋放document.querySelector('.box').onmousedown = function () {console.log('down鼠標按下');}document.querySelector('.box').onmouseup = function () {console.log('up鼠標釋放');}// mousemove 鼠標移動document.querySelector('.box').onmousemove = function () {console.log('move鼠標移動');}</script>

3.2 鍵盤事件

  • keydown - 鍵盤按下

  • keyup - 鍵盤彈起

  • keypress - 按到有效字符

    // keydown 鍵盤按下document.onkeydown = function () {console.log('down')}// keyup 鍵盤彈起document.onkeyup = function () {console.log('keyup')}// keypress 按到有效字符document.onkeypress = function (e) {//函數有個參數代表事件的對象console.log('press')console.log(e.key)console.log(e.keyCode)}

3.3 表單事件

  • submit - 表單提交

  • focus/blur - 獲得/失去焦點

  • change - 值發生改變

  • input - 輸入事件

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>.tip {color: darkgreen;}.err {color: red;}</style>
</head><body><!-- 表單 --><form id="form" action="https://www.baidu.com">用戶名:<input type="text" name="n"><br>密碼:<input type="password" name="p"><br><span class="tip" hidden>請輸入密碼</span><br><span class="err" hidden>密碼不正確</span><br><button id="btn" type="submit">按鈕</button></form><script>form.onsubmit = function (e) {e.preventDefault();//阻止提交}// 輸入document.querySelector('input')[0].oninput = function () {console.log('輸入')}// 獲取焦點,失去焦點 focus/blurdocument.querySelectorAll('input')[1].onfocus = function () {document.querySelector('.tip').hidden = falsedocument.querySelector('.err').hidden = true}document.querySelectorAll('input')[1].onblur = function () {document.querySelector('.tip').hidden = truedocument.querySelector('.err').hidden = false}// change 當值發生改變時觸發document.querySelectorAll('input')[1].onchange = function () {console.log('變了。')}</script><!-- 以下全部適合用change監聽 --><input type="checkbox"><input type="radio"><select name="" id=""></select>
</body></html>

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/91403.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/91403.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/91403.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Matplotlib(三)- 圖表輔助元素

文章目錄一、圖表輔助元素簡介二、坐標軸的標簽、刻度范圍和刻度標簽1. 坐標軸標簽1.1 x軸標簽1.2 y軸標簽1.3 示例&#xff1a;繪制天氣氣溫折線圖2. 刻度范圍和刻度標簽2.1 刻度范圍2.1.1 x軸刻度范圍2.1.2 y軸刻度范圍2.2 刻度標簽2.2.1 x軸刻度標簽2.2.2 y軸刻度標簽2.3 示…

【Linux基礎知識系列】第七十八篇 - 初識Nmap:網絡掃描工具

在網絡管理和安全領域&#xff0c;網絡掃描是一個不可或缺的工具。它可以幫助網絡管理員了解網絡中的設備、服務以及潛在的安全漏洞。Nmap&#xff08;Network Mapper&#xff09;是一個功能強大的開源網絡掃描工具&#xff0c;它能夠快速發現網絡中的主機、端口和服務&#xf…

EasyGBS的兩種錄像回看

EasyGBS 支持兩種錄像回看&#xff0c;即“平臺端”的錄像回看和“設備端”的錄像回看。本期我們來介紹兩者的區別和使用方法。一、平臺端錄像1、什么是平臺端錄像平臺端錄像是指由 EasyGBS 平臺直接錄制并存儲。2、配置平臺端錄像進入平臺&#xff0c;依次點擊【錄像回放】→【…

大模型學習思路推薦!

為進一步貫徹落實中共中央印發《關于深化人才發展體制機制改革的意見》和國務院印發《關于“十四五”數字經濟發展規劃》等有關工作的部署要求&#xff0c;深入實施人才強國戰略和創新驅動發展戰略&#xff0c;加強全國數字化人才隊伍建設&#xff0c;持續推進人工智能從業人員…

數據庫連接池性能優化實戰

背景我們公司正在處于某個項目的維護階段&#xff0c;領導對資源告警比較重視&#xff0c;服務器資源告警的就不說了&#xff0c;運維同學每隔一小時都會檢測線上環境的應用服務信息&#xff0c;例如&#xff1a;網關日志響應時間告警/nginx日志接口響應時間告警/日志關鍵字異常…

Excel常用函數大全,非常實用

一、數學與統計函數1. SUM作用&#xff1a;求和SUM(number1, [number2], ...)SUM(A1:A10) ? 計算A1到A10單元格的總和注意&#xff1a;自動忽略文本和空單元格2. AVERAGE作用&#xff1a;計算平均值AVERAGE(number1, [number2], ...)AVERAGE(B2:B20) ? 計算B列20個數據的平均…

性能優化(一):時間分片(Time Slicing):讓你的應用在高負載下“永不卡頓”的秘密

性能優化(一)&#xff1a;時間分片&#xff08;Time Slicing&#xff09;&#xff1a;讓你的應用在高負載下“永不卡頓”的秘密 引子&#xff1a;那張讓你瀏覽器崩潰的“無限列表” 想象一個場景&#xff1a;你需要渲染一個包含一萬個項目的列表。在我們的“看不見”的應用中&a…

《C++》STL--list容器詳解

在 C 標準模板庫(STL)中&#xff0c;list 是一個非常重要的序列容器&#xff0c;它實現了雙向鏈表的數據結構。與 vector 和 deque 不同&#xff0c;list 提供了高效的插入和刪除操作&#xff0c;特別是在任意位置。本文將深入探討 list 容器的特性、使用方法以及常見操作。 文…

Day 28:類的定義和方法

DAY 28 類的定義和方法 知識點學習 1. 類的定義 在Python中&#xff0c;類是創建對象的模板。使用class關鍵字來定義一個類。類名通常采用首字母大寫的命名方式&#xff08;PascalCase&#xff09;。 # 最簡單的類定義 class MyClass:pass # 使用pass占位符類的定義就像是…

OSPF綜合實驗報告冊

一、實驗拓撲二、實驗要求1、R4為ISP&#xff0c;其上只配置IP地址&#xff1b;R4與其他所直連設備間均使用公有IP&#xff1b; 2、R3-R5、R6、R7為MGRE環境&#xff0c;R3為中心站點&#xff1b; 3、整個OSPF環境IP基于172.16.0.0/16劃分&#xff1b;除了R12有兩個環回&#x…

網絡層6——內部網關協議RIP、OSPF(重點)

目錄 一、基本概念 1、理想的路由算法應具備的特點 2、分層次的路由選擇協議 二、內部網關協議RIP 1、特點 2、路由交換信息 3、距離向量算法 4、壞消息傳送慢問題 5、RIP報文格式 三、內部網關協議OSPF 1、特點 2、其他特點 3、自治系統區域劃分 4、OSPF的5中分…

同品牌的系列廣告要如何保證宣傳的連貫性?

對于品牌的系列廣告而言&#xff0c;內容的連貫性十分重要。如果系列廣告之間缺乏內在聯系&#xff0c;不僅會削弱品牌形象的統一性&#xff0c;還可能導致用戶的認知混亂。保證宣傳內容的連貫性不是讓每則廣告完全相同&#xff0c;而是在變化中保持核心要素的一致性。我們該如…

深度學習:激活函數Activaton Function

一、為什么需要激活函數&#xff1f;神經網絡本質上是多個線性變換&#xff08;矩陣乘法&#xff09;疊加。如果沒有激活函數&#xff0c;即使疊加多層&#xff0c;整體仍等價于一個線性函數&#xff1a;這樣的網絡無法學習和擬合現實世界中復雜的非線性關系。激活函數的作用&a…

deepseek: 切分類和長函數到同名文件中

import re import sys import os import ast from tokenize import generate_tokens, COMMENT, STRING, NL, INDENT, DEDENT import iodef extract_entities(filename):"""提取類和函數到單獨文件"""with open(filename, r, encodingutf-8) as f…

新型融合肽遞送外泌體修飾可注射溫敏水凝膠用于骨再生

溫敏水凝膠因能模擬細胞外基質微環境&#xff0c;且具有原位注射性和形態適應性&#xff0c;在骨組織工程中應用廣泛。小腸黏膜下層&#xff08;SIS&#xff09;作為天然細胞外基質來源&#xff0c;富含 I 型和 III 型膠原蛋白及多種生物活性因子&#xff0c;其制備的水凝膠在組…

SPI接口的4種模式(根據時鐘極性和時鐘相位)

SPI&#xff08;Serial Peripheral Interface&#xff09; 接口根據時鐘極性&#xff08;CPOL&#xff09;和時鐘相位&#xff08;CPHA&#xff09;的不同組合&#xff0c;共有 4種工作模式。這些模式決定了數據采樣和傳輸的時序關系&#xff0c;是SPI通信中必須正確配置的關鍵…

Java:高頻面試知識分享2

HashSet 和 TreeSet 的區別&#xff1f;底層實現&#xff1a;HashSet 基于 HashMap 實現&#xff0c;使用哈希表存儲元素&#xff1b;TreeSet 基于 TreeMap&#xff0c;底層為紅黑樹。元素順序&#xff1a;HashSet 無序&#xff1b;TreeSet 會根據元素的自然順序或傳入的 Compa…

C語言習題講解-第九講- 常見錯誤分類等

C語言習題講解-第九講- 常見錯誤分類等1. C程序常見的錯誤分類不包含&#xff1a;&#xff08; &#xff09;2. 根據下面遞歸函數&#xff1a;調用函數 Fun(2) &#xff0c;返回值是多少&#xff08; &#xff09;3. 關于遞歸的描述錯誤的是&#xff1a;&#xff08; &#x…

A?算法(A-star algorithm)一種在路徑規劃和圖搜索中廣泛使用的啟發式搜索算法

A?A*A?算法&#xff08;A-star algorithm&#xff09;是一種在路徑規劃和圖搜索中廣泛使用的啟發式搜索算法&#xff0c;它結合了Dijkstra算法的廣度優先搜索思想和啟發式算法的效率優勢&#xff0c;能夠高效地找到從起點到終點的最短路徑。 1. 基本原理 A*算法的核心是通過估…

UniappDay06

1.填寫訂單-渲染基本信息 靜態結構&#xff08;分包&#xff09;封裝請求API import { http } from /utils/http import { OrderPreResult } from /types/orderexport const getmemberOrderPreAPI () > {return http<OrderPreResult>({method: GET,url: /member/orde…