JavaScript 事件流、事件处理程序及事件对象总结

下面给出关于 JavaScript 事件流、事件处理程序及事件对象总结的详细攻略。

1. 事件流

事件流描述的是从页面中接收事件的顺序,分为三个阶段:

  • 捕获阶段:事件从最外层的容器开始向下传递到目标元素。
  • 目标阶段:事件到达目标元素。
  • 冒泡阶段:事件从目标元素开始向上冒泡到最外层的容器。

在标准 W3C 的事件模型中,事件传递的顺序是从上往下的(捕获阶段)、到达目标元素(目标阶段)再向上冒泡(冒泡阶段)。而在 IE 浏览器中事件传递的顺序是从下往上的(事件冒泡),直到最外层的容器。

2. 事件处理程序

事件处理程序是处理特定事件的函数。可以通过 DOM 或 HTML 属性将事件处理程序指定给元素。最常见的方式是使用 HTML 属性:

<button onclick="alert('Clicked!')">Click me</button>

也可以使用 DOM 方法:

const button = document.getElementById('myBtn');
button.onclick = function() {
  alert('Clicked!');
};

使用 addEventListener() 方法动态注册:

const button = document.getElementById('myBtn');
button.addEventListener('click', function() {
  alert('Clicked!');
});

除了添加较多的灵活性外,通过使用 addEventListener() 也可以为同一元素的同一事件添加多个处理程序。

3. 事件对象

在事件处理程序内部,可以访问事件对象 event。事件对象包含与事件相关的所有信息,例如事件类型、目标元素、鼠标的位置等。

以下是一个鼠标点击事件对象的示例:

function handleClick(event) {
  console.log(event.type); // 'click'
  console.log(event.target); // the element that was clicked on
  console.log(event.clientX); // the x coordinate of the mouse pointer when the event occurred
  console.log(event.clientY); // the y coordinate of the mouse pointer when the event occurred
}

示例1 - 点击按钮时改变背景颜色

<button id="myBtn">Change Color</button>
const button = document.getElementById('myBtn');
button.addEventListener('click', function(event) {
  document.body.style.background = 'green';
});

点击按钮后,网页的背景色会改变为绿色。

示例2 - 阻止浏览器默认行为

<a href="https://www.baidu.com" id="myLink">百度</a>
const link = document.getElementById('myLink');
link.addEventListener('click', function(event) {
  event.preventDefault();
  alert('Link clicked!');
});

点击链接后,会弹出一个提示框,同时不会跳转到百度网站。可以看到,我们在事件处理程序内部使用了 preventDefault() 方法来阻止默认行为的发生。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript 事件流、事件处理程序及事件对象总结 - Python技术站

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

相关文章

  • PHP正则表达式匹配替换与分割功能实例浅析

    以下是详细讲解“PHP正则表达式匹配替换与分割功能实例浅析”的完整攻略: 1. 什么是正则表达式? 正则表达式是一种用于匹配字符串的模式,在PHP中使用preg系列函数(例如 preg_match、preg_replace)实现正则表达式的匹配、替换、分割等操作。 2. 正则表达式基本语法 正则表达式的基本语法包括一些特殊字符和元字符,以及符号组合。 2.1…

    JavaScript 2023年6月10日
    00
  • 一文详解JavaScript中this指向的问题

    一文详解JavaScript中this指向的问题 JavaScript中的this是一个经常让人困惑的概念。它在不同的上下文中指向不同的值,这使得它的行为非常难以预测。本文将详细讲解JavaScript中this的几种不同情况及其原因。 什么是this? 首先,让我们明确一下this的定义。在JavaScript中,this的值取决于代码执行时的上下文。换句…

    JavaScript 2023年6月10日
    00
  • javascript另类方法实现htmlencode()与htmldecode()函数实例分析

    JavaScript另类方法实现 htmlEncode() 与 htmlDecode() 函数实例分析 在 JavaScript 中,有时我们需要将字符串转义为 HTML 实体或反转义。为了实现这个功能,我们可以使用 HTML 实体字符编码的概念来将特殊字符转换为 HTML 实体。本文将介绍如何在 JavaScript 中实现 htmlEncode() 与 …

    JavaScript 2023年5月20日
    00
  • JS倒计时两种实现方式代码实例

    下面我来详细讲解一下“JS倒计时两种实现方式代码实例”的完整攻略。 1. 倒计时实现方式一 1.1 基本思路 通过设定一个起始时间和一个截止时间,计算它们之间的时间差,并将时间差转化为时、分、秒显示在页面上,同时在每隔一秒钟更新一次时间。 1.2 代码实例 //定义起始时间、截止时间变量 var startTime = new Date(‘2021/10/1…

    JavaScript 2023年5月27日
    00
  • javascript 检测浏览器类型和版本的代码

    要检测浏览器类型和版本,我们可以使用JavaScript中的navigator对象。该对象提供了关于浏览器的详细信息,包括应用程序名称、代码名称、浏览器版本、当前操作系统和语言等。 以下是使用JavaScript检测浏览器类型和版本的代码: // 检测浏览器类型和版本的代码 const getBrowserInfo = () => { const ua…

    JavaScript 2023年6月10日
    00
  • javascript学习笔记之函数定义

    下面是关于“javascript学习笔记之函数定义”的完整攻略。 函数定义 函数的定义方式 JavaScript 中定义函数的方式有两种:函数声明和函数表达式。 函数声明 函数声明是通过 function 关键字定义的函数,它可以在任何位置被调用。例如: function add(a, b) { return a + b; } 函数声明定义的函数会被提升到作…

    JavaScript 2023年5月18日
    00
  • js 时间格式与时间戳的相互转换示例代码

    下面我来为您介绍 JavaScript 时间格式与时间戳的相互转换攻略。 时间格式和时间戳的概念 在 JavaScript 中,时间可以使用时间戳和时间格式表示。时间戳是一个整数,表示自 1970 年 1 月 1 日 00:00:00 UTC(协调世界时)以来的毫秒数。而时间格式则是人类可读的日期和时间表示法。常见的时间格式有 ISO 格式、标准日期格式和自…

    JavaScript 2023年5月27日
    00
  • JS面试题大坑之隐式类型转换实例代码

    针对“JS面试题大坑之隐式类型转换实例代码”这个主题,我会从以下几个方面展开攻略: 什么是隐式类型转换 JavaScript 是弱类型语言,它有一些隐式类型转换的规则,比如当进行数字类型和字符串类型运算时,JavaScript 会自动将其中一种类型转换成另一种,使得运算得以进行。这就是隐式类型转换。 那么,隐式类型转换会带来什么问题呢?我们很容易写出一些会出…

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