JS事件处理【初级理解】


前言

JavaScript 是一种广泛使用的脚本语言,它能够为网页添加交互性和动态效果。其中,事件处理是 JavaScript 的重要组成部分之一。在这篇博客中,我们将详细介绍 JavaScript 事件处理的基本知识和常用技chniques。


提示:以下是本篇文章正文内容,下面案例可供参考

一、什么是事件

在JavaScript中,事件是指发生在文档对象模型(DOM)上的一个或多个变化。当用户与页面进行交互时,如点击按钮、hover元素、屏幕滚动等,会产生不同类型的事件。我们可以通过JavaScript来监听和回应这些事件,从而实现页面的交互性和动态效果。

二、事件流

事件流是指在浏览器中事件的传递方式。当一个事件被触发时,浏览器会将该事件传递给相关的函数进行处理。事件流包括以下几个阶段:

事件源:事件源是指触发事件的元素或对象。例如,当用户点击按钮时,按钮就是事件源。
事件处理程序:事件处理程序是指接收并处理事件的代码块。它可以是函数或方法,也可以是anonimous函数。
事件目标:事件目标是指事件处理程序所处理的对象。例如,当用户点击按钮时,按钮的onclick属性所 Reference的函数的参数是事件目标。
事件派发器:事件派发器是指负责将事件传递给事件处理程序的对象。通常情况下,事件派发器是浏览器自身。
事件 listener:事件 listener 是指注册了事件处理程序的对象。它可以是元素、窗口、文档等。

三、事件类型

JavaScript 提供了许多类型的事件,每种事件都有不同的用途和处理方式。常见的事件类型包括:

click:点击事件,通常用于button、a标签等元素。
hover:悬停事件,通常用于img、a标签等元素。
focus:获得焦点事件,通常用于input、textarea、select等元素。
blur:失去焦点事件,通常用于input、textarea、select等元素。
change:改变事件,通常用于input、select等元素。
submit:提交表单事件,通常用于form元素。
keydown:键盘按下事件,通常用于input、textarea等元素。
keyup:键盘弹起事件,通常用于input、textarea等元素。
mouseover:鼠标移入事件,通常用于img、a标签等元素。
mousedown:鼠标按下事件,通常用于button、a标签等元素。
mouseout:鼠标移出事件,通常用于img、a标签等元素。
mouseup:鼠标弹起事件,通常用于button、a标签等元素。

四、事件监听

是指在 JavaScript 中注册一个函数来处理特定类型的事件。当事件发生时,浏览器会调用已经注册的函数来处理事件。

有几种方法可以在 JavaScript 中侦听事件,包括:
使用方法:这是在现代浏览器中侦听事件的最常见方法。它需要两个参数:要侦听的事件类型,以及事件发生时要调用的函数。例如:addEventListener

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

使用方法:此方法类似于 ,但仅在旧版本的 Internet Explorer 中受支持。它需要两个参数:要侦听的事件类型,以及事件发生时要调用的函数。例如:

attachEventaddEventListener
const button = document.getElementById('myButton');
button.attachEvent('onclick', function() {
  console.log('按钮点击');
});

使用属性:此方法用于使用属性将事件侦听器直接附加到 HTML 元素。例如:on

<button id="myButton" onlick="console.log('按钮点击')">Click me</button>

注册事件侦听器后,可以通过调用该方法并传入用于注册侦听器的相同事件类型和函数来删除它。例如:removeEventListener

button.removeEventListener('click', function() {
  console.log('按钮点击');
});

还值得注意的是,某些事件(例如 和 )是由浏览器自动触发的,不需要执行任何其他代码。

五、事件委派

事件委派是一种技术,您可以在其中侦听父元素上的事件,而不是将事件侦听器单独附加到每个子元素。这可以使您的代码更高效且更易于维护。

const container = document.querySelector('#container');
container.addEventListener('click', function(event) {
  if (event.target.tagName === 'BUTTON') {
    console.log('点击了');
  }
});

六、事件传播

事件传播是指事件从一个元素传递到另一个元素的过程,直到它到达 DOM 树的根元素。当事件发生时,它首先触发附加到事件发生的元素的事件侦听器,然后向上传播 DOM 树并触发附加到其父元素的事件侦听器。

const body = document.querySelector('body');
body.addEventListener('click', function(event) {
  console.log('点击了!');
});

七、事件冒泡

事件冒泡是在事件传播过程中发生的一种现象,其中嵌套元素上发生的事件也会触发附加到其父元素的事件侦听器。这意味着,如果将事件侦听器附加到父元素,它还将捕获其子元素上发生的事件。

下面是将事件侦听器附加到元素以捕获对 及其子元素的点击的示例:

const div = document.querySelector('#myDiv');
div.addEventListener('click', function(event) {
  console.log('点击了!');
});

总结

总之,事件监听是使用 JavaScript 创建交互式网页的重要组成部分。通过了解事件的工作原理以及如何侦听它们,您可以创建动态且响应迅速的用户界面,以响应用户输入和其他操作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值