基于流程的记事梳理addEventListener学习步骤

内在化理解addEventListener

回忆一下你在学校教室的场景,教室就像一个网页,教室里的各种设施,比如电灯开关、窗户等类似网页中的元素。

假设你想知道什么时候有同学打开电灯开关(触发点击事件),你就安排一个同学在电灯开关旁边(为元素添加事件监听器)。一旦有同学打开开关(事件发生),负责的同学就会执行你安排的任务,比如记录开灯的时间(回调函数中的操作)。同样,对于窗户,你也可以安排另一个同学在旁边,当窗户被打开(触发另一个事件)时,执行不同的任务,比如记录开窗的次数等。通过这样的类比,你能更好地将 addEventListener 与实际生活联系起来,理解它的工作原理。

基于流程的记事梳理addEventListener学习步骤

  1. 理解基本概念
    • 明确 addEventListener 是JavaScript中用于为HTML元素添加事件处理程序的方法。事件是用户或浏览器执行的动作,如点击、鼠标移动、按键按下等。处理程序则是当事件发生时要执行的函数,也称为回调函数。这就像在教室场景中,事件就是同学们对设施的操作,处理程序就是负责同学要执行的任务。
    • 认识到通过 addEventListener,可以使网页与用户进行交互,增强用户体验。比如当用户点击按钮时,触发相应的功能,如提交表单、显示隐藏内容等。这类似于在教室里,通过安排同学关注设施操作,实现一些特定的功能,如记录信息、发出提示等。
  2. 掌握语法结构
    • 学习 addEventListener 的基本语法:element.addEventListener(eventType, callback, useCapture)。其中,element 是要添加事件监听器的HTML元素;eventType 是事件的类型,如 'click'(点击事件)、'mouseover'(鼠标悬停事件)、'keydown'(按键按下事件)等;callback 是事件发生时要执行的函数;useCapture 是一个可选参数,通常为 false,涉及事件捕获和冒泡机制,一般初学者先不用深入理解,按默认设置即可。例如:
const myButton = document.getElementById('myButton');
myButton.addEventListener('click', function () {
    console.log('按钮被点击了');
});

这里为 idmyButton 的按钮元素添加了一个点击事件监听器,当按钮被点击时,会在控制台打印“按钮被点击了”。这就像你在教室中,为电灯开关安排了一个同学,当开关被点击时,同学执行记录操作。
3. 常见事件类型学习
- 鼠标事件:掌握常见的鼠标事件,如 'click'(点击)、'dblclick'(双击)、'mouseover'(鼠标移入)、'mouseout'(鼠标移出)、'mousedown'(鼠标按下)、'mouseup'(鼠标抬起)等。例如,为一个图片元素添加鼠标悬停事件监听器:

const myImage = document.getElementById('myImage');
myImage.addEventListener('mouseover', function () {
    myImage.style.opacity = '0.8';
});
myImage.addEventListener('mouseout', function () {
    myImage.style.opacity = '1';
});

当鼠标悬停在图片上时,图片透明度变为0.8,鼠标移出时恢复为1,实现一种简单的交互效果。这类似于在教室里,当你的手靠近窗户(鼠标悬停)时,窗户发生一些变化,手移开(鼠标移出)时又恢复原样。
- 键盘事件:了解 'keydown'(按键按下)、'keyup'(按键抬起)、'keypress'(按键按下并产生字符)等键盘事件。例如,监听输入框的按键按下事件,判断用户是否按下了回车键:

const myInput = document.getElementById('myInput');
myInput.addEventListener('keydown', function (event) {
    if (event.key === 'Enter') {
        console.log('回车键被按下');
    }
});

这就像在教室里,当你在某个设备上输入内容时(类似在输入框输入),按下特定按键(回车键)时,触发相应的操作。
- 表单事件:学习 'submit'(表单提交)、'input'(输入框内容改变)、'change'(表单元素值改变,常用于选择框、单选框等)等表单事件。例如,为一个表单添加提交事件监听器,阻止表单默认提交行为并进行自定义处理:

const myForm = document.getElementById('myForm');
myForm.addEventListener('submit', function (event) {
    event.preventDefault();
    console.log('表单提交被阻止,进行自定义处理');
});

这类似于在教室里,当同学们提交作业(表单提交)时,老师可以先阻止提交,进行一些检查或特殊处理。
4. 回调函数深入理解
- 明白回调函数可以是一个匿名函数(如前面例子中的 function () {... }),也可以是一个已经定义好的具名函数。例如:

function handleClick() {
    console.log('按钮被点击,使用具名函数');
}
const myButton = document.getElementById('myButton');
myButton.addEventListener('click', handleClick);
- 理解回调函数可以接收事件对象作为参数(如 `function (event) {... }` 中的 `event`),通过事件对象可以获取关于事件的更多信息,如鼠标点击的位置、按下的键值等。例如,在鼠标点击事件中获取鼠标点击位置:
const myDiv = document.getElementById('myDiv');
myDiv.addEventListener('click', function (event) {
    console.log(`鼠标点击位置:x = ${event.clientX}, y = ${event.clientY}`);
});

这就像在教室场景中,负责记录的同学不仅执行任务,还可以获取关于事件的详细信息,如操作发生的具体位置等。
5. 事件监听器的移除
- 学习使用 removeEventListener 方法来移除之前添加的事件监听器。例如,先添加一个事件监听器,然后在某个条件下移除它:

function handleClick() {
    console.log('按钮被点击');
}
const myButton = document.getElementById('myButton');
myButton.addEventListener('click', handleClick);

// 在某个条件下移除事件监听器
setTimeout(() => {
    myButton.removeEventListener('click', handleClick);
}, 5000);

这里5秒后移除了按钮的点击事件监听器,5秒后再点击按钮,将不会执行 handleClick 函数。这类似于在教室里,一开始安排同学关注某个设施操作,一段时间后取消这个安排,同学不再对设施操作做出反应。

画图表展示addEventListener结构关系

组件描述与整体关系
addEventListenerJavaScript中为元素添加事件处理程序的方法在店铺门口安排信息收集员的方式
element要添加事件监听器的HTML元素商场里的店铺或教室里的设施
eventType事件的类型,如click、mouseover等顾客的行为或同学对设施的操作类型
callback事件发生时要执行的函数信息收集员或负责同学要执行的任务
useCapture可选参数,涉及事件捕获和冒泡机制信息收集员的特殊工作模式(一般先不深入了解)
常见事件类型(鼠标、键盘、表单等事件)不同类型的用户或浏览器操作事件不同类型的顾客行为或同学对设施的操作
回调函数形式(匿名、具名)回调函数的不同定义方式执行任务的不同安排方式(无名任务或有名任务)
事件对象回调函数接收的包含事件详细信息的对象负责同学获取的关于事件的详细信息
removeEventListener移除事件监听器的方法取消信息收集员或负责同学工作安排的方式
网页交互通过addEventListener实现的用户与网页的交互通过安排同学关注设施操作实现的教室功能交互
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鸭梨山大哎

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值