WebAPIs 第二天

DOM事件基礎

  • 事件監聽
  • 事件類型
  • 事件對象

?一.事件監聽

① 概念:就是讓程序檢測是否有事件發生,一旦有事件觸發,就立即調用一個函數做出響應,也成為綁定事件或者注冊事件

② 語法:元素對象.addEventListener('事件類型', 要執行的函數)

③ 事件監聽三要素:

? (1)事件源:哪個DOM元素被事件觸發了,要獲取dom元素

? (2)事件類型:用什么方式觸發,比如鼠標單擊click, 鼠標經過 mouseover等

? (3)事件調用的函數:要做什么事

④ 注意:

  • 事件類型要加引號
  • 函數是觸發一次就執行一次
const btn = document.querySelector('button')btn.addEventListener('click', function() {alert('你好呀')
})

⑤ 事件監聽版本(拓展)

  • DOM L0? ??

? ? 事件源.on事件 = function(){}

  • DOM L2

? ? 事件源.addEventListenner(事件,事件處理函數)

  • 區別

? ? on 方式會被覆蓋,addEventListenner 方式可綁定多次,擁有事件更多特性,推薦使用

二.事件類型

① 鼠標事件:鼠標觸發

  • click 鼠標點擊
  • mouseenter 鼠標經過
  • mouseleave 鼠標離開
const div = document.querySelector('div')
// 鼠標經過
div.addEventListener('mouseenter', function () {console.log('hello')
})
// 鼠標離開
div.addEventListener('mouseleave', function () {console.log('走了')
})

② 焦點事件:表單獲得光標

  • focus 獲得焦點
  • blur 失去焦點
 // 獲得焦點和失去焦點
const input = document.querySelector('input')
input.addEventListener('focus', function () {console.log('獲得焦點')
})input.addEventListener('blur', function () {console.log('失去焦點')
})

③ 鍵盤事件:鍵盤觸發

  • keydown 鍵盤按下觸發
  • keyup 鍵盤抬起觸發
const input = document.querySelector('input')
input.addEventListener('keydown', function () {console.log('鍵盤按下')
})
input.addEventListener('keyup', function () {console.log('鍵盤彈起')
})

④ 文本事件:表單輸入觸發

  • input 用戶輸入事件
const input = document.querySelector('input')
input.addEventListener('input', function () {console.log(input.value)
})

?三.事件對象

?1.獲取事件對象

?2.事件對象常用屬性

3.1 獲取事件對象

① 事件對象概念

  • 也是個對象,這個對象有事件觸發時的相關信息

② 使用場景

  • 可以判斷用戶按下哪個鍵或者點擊了哪個元素

③ 如何獲取

  • 在事件綁定的回調函數的第一個參數就是事件對象
  • 一般命名為event,ev, e

?④ 語法

元素.addEventListener('click', function(e) {
})

3.2 事件對象屬性

  • type? ? ? 獲取當前的事件類型
  • clientX/clientY? ? 獲取光標相對于瀏覽器可見窗口左上角的位置
  • offsetX/offsetY? ?獲取光標相對于DOM元素左上角的位置
  • key? ? ?用戶按下的鍵盤鍵的值(不推薦)

四.環境對象?

  • 環境對象:指的是函數內部特殊的變量this,代表當前函數運行時所處的環境
  • 作用:弄清楚this的指向,可以使代碼更加簡潔
  • 函數的調用方式不同,this指代的對象也不同
  • 【粗略規則】誰調用this就指向誰

五.回調函數

① 概念:如果將函數A作為參數傳遞給函數B時,將函數A稱為回調函數

② 使用匿名函數作為回調函數比較常見

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

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

相關文章

機器學習---對數幾率回歸

1. 邏輯回歸 邏輯回歸(Logistic Regression)的模型是一個非線性模型, sigmoid函數,又稱邏輯回歸函數。但是它本質上又是一個線性回歸模型,因為除去sigmoid映射函 數關系,其他的步驟,算法都是…

從零開始,貪吃蛇小游戲系列專欄完美收官!

🎮 從零開始,貪吃蛇小游戲系列專欄完美收官! 🐍 各位游戲開發探索者們,大家好!我是[億元程序員],一位擁有8年游戲開發經驗的主程。經過一段時間的努力,我很高興地宣布,我…

阿里云預裝LAMP應用導致MySQL不顯示訪問密碼如何解決

😀前言 本篇博文是關于阿里云云服務器ECS部署MySQL過程中出現的一下坑,希望能夠幫助到您😊 🏠個人主頁:晨犀主頁 🧑個人簡介:大家好,我是晨犀,希望我的文章可以幫助到大家…

SUB-1G SOC芯片DP4306F 32 位 ARM Cortex-M0+內核替代CMT2380F32

DP4306F是一款高性能低功耗的單片集成收發機,集成MO核MCU,工作頻率可覆蓋200MHiz^ 1000MHz。 支持230/408/433/470/868/915頻段。該芯片集成了射頻接收器、射頻發射器、頻率綜合器、GFSK調制器、GFSK解調器等功能模塊。通過SPI接口可以對輸出功率、頻道選…

gitlab-Runner搭建

root wget https://packages.gitlab.com/runner/gitlab-runner/packages/fedora/29/gitlab-runner-12.6.0-1.x86_64.rpm/download.rpm rpm -ivh download.rpm ---- 安裝 rpm -Uvh download.rpm -----更新升級 然后運行: gitlab-runner register --url https://git…

RabbitMQ相關面試題

用到了哪些MQ?什么使用場景?MQ的組成部分?MQ宕機了怎么辦?如何進行持久化的? MQ的選型? Kafka:高吞吐量、低延遲的分布式消息隊列,主要用于大規模數據處理和流式處理 RocketMQ:RocketMQ是阿里巴巴開源的分布式消息隊列,具有高吞吐量、低延遲、高可靠性等特點 RabbitM…

【Go 基礎篇】Go語言浮點類型:探索浮點數的特點與應用

介紹 浮點數是計算機編程中用于表示實數的一種數據類型,用于處理具有小數部分的數值。Go語言(Golang)提供了兩種主要的浮點數類型:float32和float64,分別用于單精度和雙精度浮點數的表示。本篇博客將深入探討Go語言中…

38 | 浦發銀行股票分析案例

本文將通過一個浦發銀行股票分析案例,探討如何從多個維度對股票進行分析,包括基本面、技術面和市場環境等因素。我們將深入挖掘浦發銀行的財務數據、業務模式以及市場定位,以了解其內在價值和潛在風險。同時,我們還將考察技術面的指標,如價格走勢、均線形態等,以揭示市場…

linux 命令--常用關機命令

1.使用shutdown命令 shutdown命令是Linux系統下最常用的關機命令之一。它可以讓系統在指定時間內進行關機或者重啟操作。例如,下面的命令可以讓系統在5分鐘后進行關機操作: sudo shutdown -h5其中,“-h”表示關機,“5”表示5分鐘…

ThinkPHP8命名規范-ThinkPHP8知識詳解

本文主要講解thinkphp8的命名規范,主要包括:遵循PHP自身的PSR-2命名規范和PSR-4自動加載規范、目錄和文件命名規范、函數和類、屬性命名規范、常量和配置命名規范、數據表和字段命名規范、不能使用PHP保留字。 在使用thinkphp8開發項目之前,…

C#使用OpenCv(OpenCVSharp)圖像全局二值化處理實例

本文實例演示C#語言中如何使用OpenCv(OpenCVSharp)對圖像進行全局二值化處理。 目錄 圖像二值化原理 函數原型 參數說明 實例 效果 圖像二值化原理

線程轉換狀態,傻傻分不清等待和阻塞嗎?你還在暴力的停止線程嗎?

線程切換 線程創建之后,調用start()方法開始運行。當線程執行wait()方法之后,線程進入等待狀態。進入等待狀態的線程需要依靠其他線程的通知才能夠返回到運行狀態,而超時等待狀態相當于在等待狀態的基礎上增加了超時限制,也就是超…

騰訊云服務器競價實例是什么?適用于什么行業?有啥優惠?

騰訊云服務器CVM計費模式分為包年包月、按量計費和競價實例,什么是競價實例?競價實例和按量付費相類似,優勢是價格更劃算,缺點是云服務器實例有被自動釋放風險,騰訊云服務器網來詳細說下什么是競價實例?以及…

GUI、多線程編程、網絡編程簡介

GUI、多線程編程、網絡編程簡介 文章目錄 GUI簡介什么是GUIGUI有什么用使用方法 多線程編程什么是多線程編程多線程編程有什么用提高程序的響應能力提高程序的性能實現異步編程并發數據訪問和共享資源實現復雜的算法和任務分解 進行多線程編程的步驟 網絡編程什么是網絡編程網絡…

JMeter處理接口簽名之BeanShell實現MD5加密

項目A需要給項目B提供一個接口,這個接口加密了,現在需要測試這個接口,需要怎么編寫腳本呢?實現接口簽名的方式有兩種:BeanShell實現MD5加密和函數助手實現MD5加密,之前已經分享過了函數助手實現MD5加密&…

React如何配置env環境變量

React版本: "react": "^18.2.0" 1、在package.json平級目錄下創建.env文件 2、在‘.env’文件里配置環境變量 【1】PUBLIC_URL 描述:編譯時文件的base-href 官方描述: // We use PUBLIC_URL environment variable …

從KM到Cure Models:常用生存分析方法的優缺點

一、引言 生存分析是一種用于研究個體生命長度或事件發生時間的統計方法。在許多領域中,如醫學、社會學、經濟學和工程學等,生存分析被廣泛應用于分析個體的生存時間,并研究相關因素對生存時間的影響。通過生存分析,我們可以評估特…

交換排序——選擇排序和冒泡排序的區別是什么?

今天重溫一下算法,其實剛開始我覺得冒泡排序和選擇排序是一樣的,因為他們排序過程中都是通過相鄰的數據比較找到最小/最大的數據,通過不斷思考和學習才明白,兩者還是有區別的。 冒泡排序 概念 冒泡排序(Bubble Sort)&#xff0…

SpringBoot使用thymeleaf模版引擎配置自定義錯誤頁面

1、要在Spring Boot項目中配置自定義的錯誤頁面&#xff0c;你可以遵循以下步驟&#xff1a; 1.1、pom.xml引入thymeleaf <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId><…

【正版系統】2023熱門短劇SAAS版開源 | 小程序+APP+公眾號H5

當我們在刷百度、D音、K手等各種新聞或短視頻時經常會刷到劇情很有吸引力的短劇廣告&#xff0c;我們點擊廣告鏈接即可進入短劇小程序&#xff0c;小程序運營者通過先免費看幾集為誘耳然后在情節高潮時彈出充值或開VIP會員才能繼續看的模式來賺錢&#xff0c;以超級贅婿、鄉村小…