javascript,DOM事件,传统事件和事件监听详解

news/2024/7/19 14:41:27 标签: javascript, 开发语言, ecmascript, js

事件三要素

事件源、事件类型、事件处理函数

传统事件

传统事件只能拿到冒泡阶段,不能拿到捕获阶段(onblur、onmouseleave没有冒泡阶段)

同一个元素的同一个事件多次注册,只会执行最后一次

传统事件类型

input事件作用
onblur失去焦点
onchange修改内容(跟上一次的内容相比,内容被改变),并且失去焦点触发
onfocus获取焦点
oninput每次修改内容就会触发,无需失去焦点
键盘事件作用(如果input作为事件源,当获取焦点时按键盘会触发)
onkeydown键盘按下触发(不区分大小写)
onkeypress键盘按下触发,只识别字符输入键,不识别功能键(区分大小写)
onkeyup键盘弹起时触发(不区分大小写)
鼠标事件功能
onmousedown鼠标按下
onmouseup鼠标弹起
onmousemove鼠标进入移动的时候触发,不停的移动就不停的触发
onmouseenter鼠标只要进入就触发(没有冒泡效果,推荐)
onmouseleave鼠标移出(没有冒泡效果,推荐)
onmouseover鼠标移入触发(有冒泡效果)
onmouseout鼠标移出触发(有冒泡效果)
其它事件功能
onclick点击元素时触发
onscroll元素滚动时触发
onsubmit表单提交行为时被触发

鼠标经过事件:

mouseovermouseout 会有冒泡效果

mouseentermouseleave 没有冒泡效果 (推荐)

设置传统事件

在行内设置onclick属性:

 <button onclick="handleClick()">点击我</button>
 ​
 <script>
 function handleClick() {
   // 当按钮被点击时执行的代码
 }
 </script>

在JavaScript中设置onclick属性:

 element.onclick = function() {
   // 当元素被点击时执行的代码
 };

事件监听

addEventListener()

  • addEventListener (事件类型,事件处理函数,布尔值)

  • add(增加)event (事件) Listener (监听)

  • 既有捕获阶段,也有冒泡阶段

  • 布尔值=true,开启捕获阶段

  • 布尔值=false 或者不写(默认为false),开启冒泡阶段

  • 同一个元素注册多个相同的事件监听,都会被执行,从上到下执行

   <button>点击</button>
   <script>
     btn = document.querySelector('button')
     btn.addEventListener('click', function () {
       console.log('点击了按钮');
     })
   </script>

在实际开发中,使用addEventListener来监听事件是更现代和推荐的做法,因为它提供了更好的灵活性,允许添加多个事件监听器,而不会覆盖之前设置的处理函数。而onclick属性虽然简单,但只能绑定一个处理函数,如果多次设置,会覆盖之前的处理函数

事件类型

JavaScript 支持多种类型的事件,包括但不限于以下几种:

  • click: 当用户点击一个元素时触发

  • dblclick: 当用户双击一个元素时触发

  • mouseover: 当用户的鼠标指针滑过一个元素时触发(会有冒泡效果)

  • mouseout: 当用户的鼠标指针移出一个元素时触发(会有冒泡效果)

  • mousemove: 当用户的鼠标指针在元素内部移动时触发

  • mousedown: 当用户按下鼠标按钮时触发

  • mouseup: 当用户释放鼠标按钮时触发

  • keypress: 当用户按下并释放一个键时触发

  • keydown: 当用户按下一个键时触发

  • keyup: 当用户释放一个键时触发

  • focus: 当元素获得焦点时触发(例如输入框被点击)

  • blur: 当元素失去焦点时触发

  • change: 当元素的值发生变化时触发(如输入框内容改变)

  • submit: 当表单提交时触发

  • load: 当页面或元素加载完成时触发

  • scroll: 当元素或窗口滚动时触发

移除传统事件和事件监听

移除传统事件

 // 按钮点击一次后,点击事件就失效
 btn.onclick=function(){
       alert('被点击了')
       btn.onclick=null
     }

移除事件监听

 // 按钮点击一次后,点击事件就失效 
  <button>点击</button>
   <script>
     btn = document.querySelector('button')
     btn.addEventListener('click', fun )
     function fun() {
       alert('被点击了')
       btn.removeEventListener('click',fun)
     }
   </script>

click、click()、onclick区别

在JavaScript中,clickclick()onclick都与点击事件相关,但它们有不同的用途和上下文。下面是对这三个概念的详细解释:

click 事件

click 是一个事件类型,它表示用户点击了某个元素。这个事件可以通过addEventListener方法来监听和处理。

 element.addEventListener('click', function() {
   // 当元素被点击时执行的代码
 });

click() 方法

click() 是一个DOM(文档对象模型)方法,它模拟了对元素的点击操作。调用这个方法会触发该元素的click事件。

 element.click();

使用click()方法通常是在编程逻辑中需要模拟用户点击行为时,而不是由用户的实际点击触发的。

onclick 属性

onclick 是一个DOM属性,用于指定当元素被点击时要执行的JavaScript函数。它是一个事件处理器属性,可以直接在HTML元素中设置,或者在JavaScript代码中为元素设置。

三者的区别

  • click:是一个事件类型,需要通过addEventListener来监听。

  • click():是一个DOM方法,用于模拟点击事件,触发元素的click事件。

  • onclick:是一个DOM属性,用于指定点击事件的处理函数。

通常,click()方法用于在编程逻辑中触发点击事件,而不是在响应用户交互时使用。如果你需要在用户点击时执行代码,应该使用addEventListener来监听click事件,或者使用onclick属性来指定处理函数。


http://www.niftyadmin.cn/n/5479802.html

相关文章

常见深度学习之十二大激活函数【函数定义、性质、数学公式、代码实现】

目录 前言 1、激活函数的定义与作用 2、激活函数的性质 二、常见的激活函数 2.1 Sigmoid函数&#xff1a; 1. 作用 2. 优点 3. 缺点 4. 数学公式 5.Sigmoid函数实现及可视化图像 2.2 Tanh函数 1. 函数定义 2.优点 3.缺点 4.Tanh函数实现及可视化图像 2.3ReLU 函数 &#xff1a;…

如何通过VPN访问内网?

VPN&#xff08;Virtual Private Network&#xff09;是一种通过公共网络建立私有网络连接的技术&#xff0c;可以在不同地点的网络中建立安全通道&#xff0c;实现远程访问内网资源的目的。本文将介绍如何通过VPN访问内网&#xff0c;并介绍一款名为“天联”的VPN服务。 什么是…

创建型模式--4.抽象工厂模式【弗兰奇一家】

1. 奔向大海 在海贼世界中&#xff0c;位于水之都的弗兰奇一家是由铁人弗兰奇所领导的以拆船为职业的家族&#xff0c;当然了他们的逆向工程做的也很好&#xff0c;会拆船必然会造船。船是海贼们出海所必备的海上交通工具&#xff0c;它由很多的零件组成&#xff0c;从宏观上看…

蓝桥杯算法题:外卖店优先级

“饱了么”外卖系统中维护着 N 家外卖店&#xff0c;编号 1∼N。每家外卖店都有一个优先级&#xff0c;初始时 (0时刻) 优先级都为 0。每经过 1个时间单位&#xff0c;如果外卖店没有订单&#xff0c;则优先级会减少 1&#xff0c;最低减到 0&#xff1b;而如果外卖店有订单&am…

ORA-00600: internal error code, arguments: [krbcbp_9]

解决方案 1、清理过期 2、control_file_record_keep_time 修改 恢复时间窗口 RMAN (Recovery Manager) 是 Oracle 数据库的备份和恢复工具。在 RMAN 中&#xff0c;可以使用“恢复窗口”的概念来指定数据库可以恢复到的时间点。这个时间点是基于最近的完整备份或增量备份。 …

LeetCode 289.生命游戏————2024 春招冲刺百题计划

根据 百度百科 &#xff0c; 生命游戏 &#xff0c;简称为 生命 &#xff0c;是英国数学家约翰何顿康威在 1970 年发明的细胞自动机。 给定一个包含 m n 个格子的面板&#xff0c;每一个格子都可以看成是一个细胞。每个细胞都具有一个初始状态&#xff1a; 1 即为 活细胞 &am…

安卓系统内置语音识别技术——Speech-to-Text的研究与实践

摘要 本文聚焦于安卓系统内置的Speech-to-Text技术&#xff0c;对其基本概念、工作原理、具体使用方法、性能优劣以及典型应用场景进行深入剖析&#xff0c;并结合实例代码阐述其在安卓开发中的应用。安卓系统内置的Speech-to-Text功能作为一项基础的语音识别服务&#xff0c;为…

一种驱动器的功能安全架构介绍

下图提供了驱动器实现安全功能的架构 具有如下特点&#xff1a; 1.通用基于总线或者非总线的架构。可以实现ethercat的FSOE&#xff0c;profinet的profisafe&#xff0c;或者伺服本体安全DIO现实安全功能。 2.基于1oo2D架构&#xff0c;安全等级可以达到sil3。 3.高可用性。单…