JS中addEventListener的用法

本文详细解析了事件模型,包括事件捕获、目标阶段和事件冒泡,以及如何使用addEventListener进行事件处理。涵盖鼠标、键盘和UI类事件类型,探讨了事件对象的使用和事件类型的分类。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

事件模型

这是一个完整的事件流: 事件捕获----处于目标----事件冒泡

注意:事件捕获由于浏览器兼容问题用的比较少

 

事件处理程序(addEventListener)

格式为:element.addEventListener(type, handle, false);

type: 事件触发类型,如click,keypress等等,下面我们详细的讲讲事件类型!!

handle:事件处理函数,事件出发后,定义可能发生的变化!!

false: 表示事件冒泡模型,一般来说都是false。

栗子如下所示(只展示关键代码):

var flag = false;
btn.addEventListener('click',function(){
   senction.style.backgroundColor = flag?'#ddd':'#bbb'
},false);

效果图如下图所示:

在这两种背景颜色之间来回转换。



事件对象

将handle事件处理函数中的function(){}适当的修改为:function(event){conso;le.log(event)};则将会输出该事件的全部信息,截图如图所示:

包括触发事件时鼠标所点击的位置,是否取消冒泡事件(cancelBubble):这就是上面的addEventListener最后一项是false的原因了。

 

事件类型

事件类型整体来说可以分为三大类:

1)鼠标类

click                        点击

mousedown            按下

mouseup                松开

mouseenter            划进

mouseleave           划出

mouseover            划进

mouseout              划出

mousemove          移动

上面两个划进划出,区别在于是否对子元素有影响,具体可以去百度查一查用法的差异

 

2)键盘类

keydown         按下(按所有键都会触发)

keypress         按下(按字符集触发)

keyup              松开

两者设计的初衷就不同。

keypress 就是用来检测用户输了啥字符的,而 keydown 则是单纯的检测用户是否按了键盘上的按键,所以 keypress 常用。

两者事件对象上的 keyCode 值也不同。

keyCode是一个代码,与键盘上的一个键对应。在 keypress 事件中,这个 keyCode 还与 ASCII码对应,比如keyCode 等于 105 ,就是按了 i

最后说下,判断一个前端专业不专业,就问下他开发界面的时候有没有考虑过键盘事件。

 

3)UI类

load                 加载

unload             重载

resize             改变浏览器尺寸

scroll               使用滚动条

 

 

本博客属于作者原创,如需转载请注明出处

在 JavaScript 中,`addEventListener` 是一个非常重要的方法,用于向指定的元素添加一个或多个事件监听器。它使得我们可以对用户交互(如点击、输入、滚动等)做出响应。 ### 基本语法: ```javascript element.addEventListener(event, function, useCapture); ``` - `element`:要绑定事件的 DOM 元素。 - `event`:事件名称(字符串),如 `'click'`, `'mouseover'`, `'keydown'` 等。 - `function`:当事件发生时要执行的函数。 - `useCapture`(可选):布尔值,表示是否在捕获阶段触发事件,默认为 `false`(冒泡阶段)。 --- ### 示例代码: ```javascript // 获取按钮元素 const button = document.getElementById('myButton'); // 添加点击事件监听器 button.addEventListener('click', function(event) { alert('按钮被点击了!'); }); ``` ### 说明: - `document.getElementById('myButton')` 获取页面中 id 为 `myButton` 的元素。 - `addEventListener('click', ...)` 给该元素添加了一个点击事件监听器。 - 当用户点击按钮时,匿名函数会被执行,弹出提示框。 --- ### 多个事件监听器: 你可以为同一个元素添加多个监听器,分别处理不同的事件: ```javascript const input = document.getElementById('myInput'); input.addEventListener('focus', function() { console.log('输入框获得焦点'); }); input.addEventListener('blur', function() { console.log('输入框失去焦点'); }); ``` --- ### 事件对象(Event Object): 每个事件监听函数都会接收到一个 `event` 对象,它包含事件的详细信息: ```javascript button.addEventListener('click', function(event) { console.log('事件类型:', event.type); // click console.log('触发事件的元素:', event.target); // button 元素 }); ``` --- ### 移除事件监听器: 使用 `removeEventListener` 可以移除之前添加的监听器: ```javascript function handleClick(event) { alert('按钮被点击了!'); button.removeEventListener('click', handleClick); } button.addEventListener('click', handleClick); ``` 注意:`removeEventListener` 必须传入与 `addEventListener` 相同的函数引用,因此不能使用匿名函数。 --- ### 事件传播(冒泡 vs 捕获): - 默认是冒泡阶段触发(`useCapture = false`)。 - 如果你想在捕获阶段触发事件,设置 `useCapture = true`。 ```javascript document.body.addEventListener('click', function() { console.log('Body 被点击(捕获阶段)'); }, true); document.getElementById('myButton').addEventListener('click', function() { console.log('按钮被点击'); }); ``` --- ### 优点: - 支持多个监听器绑定到同一个事件上。 - 不会覆盖已有的监听器。 - 更加灵活,推荐使用这种方式绑定事件。 --- ### 相关问题:
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值