一起深入理解js中的事件对象

一起深入理解JS中的事件对象

在客户端JS中,事件对象是非常重要的概念之一,它提供了关于事件被触发的所有信息。了解并使用事件对象可以让我们写出更加优秀的JS代码,并更好的理解浏览器的事件模型。

何为事件对象

事件对象是指在JavaScript中当一个事件被触发时,浏览器会自动创建一个事件对象。事件对象中包含着与所触发事件相关的所有信息,如事件发生的位置、事件类型、鼠标按键、键盘按键、滚动数据等等。

当事件处理程序被调用时,事件对象会自动作为第一个参数传递给事件处理程序。

事件对象的属性

事件对象中包含的信息非常丰富,下面是一些比较常用的属性。

通用属性

  • type:表示触发事件的类型。
  • target:表示事件的目标元素。
  • currentTarget:表示事件绑定的当前元素。
  • eventPhase:表示事件处理的阶段,常用的值有0(捕获)、1(处于目标)和2(冒泡)。
  • timeStamp:表示事件被创建的时间戳。

鼠标事件的属性

  • clientXclientY:表示事件发生时鼠标指针的位置,以浏览器窗口的左上角为参考点。
  • screenXscreenY:表示事件发生时鼠标指针的位置,以屏幕的左上角为参考点。
  • button:表示鼠标按键的类型,比如左键(0)、中键(1)和右键(2)等等。
  • altKeyctrlKeyshiftKey:表示是否按下了键盘上的Alt、Ctrl和Shift键。

键盘事件的属性

  • keyCode:表示按下的键盘按键的字符编码。
  • altKeyctrlKeyshiftKey:表示是否按下了键盘上的Alt、Ctrl和Shift键。

事件对象的方法

事件对象不仅包含信息,还提供了一些方法,用来操作浏览器的默认行为和事件的冒泡。

阻止默认行为

使用preventDefault方法可以取消浏览器对事件的默认行为,比如阻止链接的跳转、表单的提交等等。

document.querySelector('a').addEventListener('click', function(event) {
  event.preventDefault(); // 阻止链接跳转
});

阻止事件冒泡

使用stopPropagation方法可以防止事件进一步传播到更上层的元素。

document.querySelector('a').addEventListener('click', function(event) {
  event.stopPropagation(); // 阻止冒泡到更上层的元素
});

示例

下面通过两个示例,展示如何使用事件对象。

示例一

在一个按钮上添加点击事件,当用户点击按钮时,获取按钮坐标并打印出来。

<button id="myButton">点击我</button>
const button = document.querySelector('#myButton');
button.addEventListener('click', function(event) {
  const x = event.clientX;
  const y = event.clientY;
  console.log(`x: ${x}, y: ${y}`);
});

示例二

在一个列表中的每一项上添加点击事件,当用户点击某一项时,高亮该项并同时取消其他项的高亮效果。

<ul id="myList">
  <li>第一项</li>
  <li>第二项</li>
  <li>第三项</li>
</ul>
const list = document.querySelector('#myList');
const items = list.querySelectorAll('li');
items.forEach((item) => {
  item.addEventListener('click', function(event) {
    items.forEach((i) => i.classList.remove('highlight'));
    event.currentTarget.classList.add('highlight');
  });
});

结语

事件对象是前端开发不可或缺的知识点之一,了解其属性和方法,可以帮助我们更好的操作DOM,提升用户交互体验。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:一起深入理解js中的事件对象 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • javascript 代码是如何被压缩的示例代码

    Javascript代码被压缩通常可以分为以下几个步骤: 去除代码中的空格、注释、不必要的换行符等无用字符。 压缩变量名,将长变量名换成短变量名,同时确保不会与其他变量名产生冲突。 压缩函数名,将函数名换成简短的名字。 将一些常见的操作(如+、-、*、/)转换成更短的操作符(如@、^、#、|)。 一些改善性能的代码优化。例如:使用逗号操作符合并多次赋值、将较…

    JavaScript 2023年5月27日
    00
  • 实例分析JS中的相等性判断===、 ==和Object.is()

    当我们在JavaScript中需要判断两个值是否相等时,经常会用到的操作符有三个:全等比较符===,等于比较符==和Object.is()方法,但它们之间存在某些细微而重要的区别。接下来,我们将逐一介绍它们的用法及特点。 全等比较符=== 全等比较符比较两个值是否严格相等,它要求比较对象的类型和值都相等才会返回true,否则返回false。下面是一个简单的例…

    JavaScript 2023年6月10日
    00
  • 浅谈js函数三种定义方式 & 四种调用方式 & 调用顺序

    浅谈JS函数三种定义方式 在JavaScript中,函数也是对象。定义函数的方法有三种:函数声明、函数表达式和Function构造函数。它们的语法如下: 函数声明 function fnDeclaration(arg1, arg2, …) { // 函数体 } 函数声明是函数最基本的定义方式。它是在函数执行前就会被解析并创建,所以可以先调用函数再声明函数…

    JavaScript 2023年5月27日
    00
  • 7个令人惊讶的JavaScript特性详解

    7个令人惊讶的JavaScript特性详解 介绍 这篇文章将会介绍七个我们可能不知道或很少使用的有趣的JavaScript特性。这些特性可能会帮助你更好地理解JavaScript的本质以及如何更好地使用它。 1. 默认参数 默认参数允许我们在一个函数的参数列表中为某些参数定义默认值。如果没有传递值给这个参数,它将使用默认值。 function sayHell…

    JavaScript 2023年5月27日
    00
  • JavaScript 创建对象

    下面是 JavaScript 创建对象的完整攻略: 1. 对象创建方式 JavaScript 有三种创建对象的方式: 1.1. Object 构造函数方式 使用 Object 构造函数创建对象时,需要通过 new 操作符创建一个对象实例。 let obj = new Object(); obj.name = ‘张三’; obj.age = 18; 1.2. …

    JavaScript 2023年5月27日
    00
  • JavaScript面试技巧之数组的一些不low操作

    我来详细讲解一下JavaScript面试技巧之数组的一些不low操作的攻略。 一、数组基础 在JavaScript中,数组是一种高效的数据结构,它是由一组按照顺序排列的值组成的集合。数组中的每个值都有一个索引,索引从0开始,依次递增1。 我们可以使用以下代码定义一个简单的数组: const arr = [1, 2, 3, 4, 5]; 二、数组的增删改查 1…

    JavaScript 2023年5月27日
    00
  • Javascript Math abs() 方法

    JavaScript中的Math.abs()方法用于返回一个数的绝对值。该方法接受一个参数,即要计算绝对值的数值。以下是关于Math.abs()方法的完整攻略,包括两个示例。 JavaScript Math对象中的abs()方法 JavaScript Math对象中的abs()方法用于返回一个数的绝对值。该方法接受一个参数,即要计算绝对值的数值。 下面是ab…

    JavaScript 2023年5月11日
    00
  • js中window.open()的所有参数详细解析

    下面我来为你详细讲解“js中window.open()的所有参数详细解析”。 1. window.open()的用途 window.open()是JavaScript中的一个方法,它可以通过创建新的浏览器窗口或标签页来打开一个新的URL地址。 2. window.open()的语法 window.open([URL], [name], [features],…

    JavaScript 2023年6月11日
    00
合作推广
合作推广
分享本页
返回顶部