JavaScript高级程序设计 阅读笔记(十七) js事件

JavaScript是一种基于对象和事件驱动的编程语言,可以实现页面的互动效果。在JavaScript高级程序设计中,js事件的相关知识是常见的知识点。本篇笔记主要介绍js事件的相关内容。

事件的概述

在Web应用中,经常需要处理用户的输入或操作,例如,鼠标单击、按键按下等操作。这种操作可以称之为事件,事件可以被JavaScript代码监听并进行相应的处理,从而实现页面的互动效果。

事件处理程序

为了监听和处理事件,JavaScript提供了事件处理程序。事件处理程序可以是函数或是函数表达式,可以通过HTML元素的属性来指定,例如:

<button onclick="alert('Hello')">点击</button>

上述代码中,按钮元素的onclick属性会在按钮被点击时执行alert('Hello')语句。

另外,也可以通过JavaScript代码来为元素添加事件处理程序,例如:

var btn = document.querySelector('button');
btn.onclick = function() {
    alert('Hello');
};

上述代码中,querySelector方法获取了第一个button元素,然后为按钮元素的onclick属性赋值一个函数表达式,函数表达式实现了弹出Hello的效果。

事件模型

JavaScript事件模型分为两种:DOM0级事件和DOM2级事件。DOM0级事件是指通过HTML元素的属性来指定事件处理程序,例如上面示例中的按钮的onclick属性。DOM2级事件是指通过addEventListener()和removeEventListener()方法来实现事件处理程序的添加和删除。

这两种事件模型的主要区别在于多个事件处理程序的执行顺序。在DOM0级事件中,同一事件只能指定一个事件处理程序。在DOM2级事件中,一个元素可以为同一事件指定多个事件处理程序,多个事件处理程序的执行顺序由添加的顺序决定。

事件流

事件流描述的是事件从页面中接收的顺序,事件可以沿着两个方向流动:从文档顶部向下流动(捕获阶段)和从文档底部向上流动(冒泡阶段)。

当HTML元素嵌套时,事件的流动会按照HTML元素的嵌套结构依次触发,先从祖先元素开始触发,再依次向下触发。

<div id="outer">
    <div id="inner">点击这里</div>
</div>
var outer = document.querySelector('#outer');
var inner = document.querySelector('#inner');

outer.addEventListener('click', function() {
    console.log('outer');
}, true);
inner.addEventListener('click', function() {
    console.log('inner');
}, true);

上述代码中,在outer元素和inner元素都添加了事件处理程序,第三个参数设置为true,则事件处于捕获阶段。这时,点击inner元素,会先触发outer元素的事件处理程序,然后再触发inner元素的事件处理程序。

阻止事件冒泡和默认行为

在事件冒泡过程中,除非阻止事件冒泡,否则事件会一直冒泡到document对象,可以使用stopPropagation()方法来阻止事件冒泡。

另外,有些元素在默认情况下会执行一些操作,例如在表单中提交表单数据时,可以使用preventDefault()方法来阻止元素默认行为的执行。

<a href="https://www.baidu.com/">百度一下</a>
var a = document.querySelector('a');
a.addEventListener('click', function(event) {
    event.preventDefault();
}, false);

上述代码中,在点击a元素时,将会阻止默认行为,不会打开新的页面。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript高级程序设计 阅读笔记(十七) js事件 - Python技术站

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

相关文章

  • 详解JavaScript时间格式化

    详解JavaScript时间格式化 什么是时间格式化 在编写前端代码中,经常需要将时间进行格式化展示。时间格式化可以把人类可读的时间转换成计算机可读的时间,或将计算机可读的时间转换成人类可读的时间格式。实现时间格式化可以让用户更易于理解,也方便程序后续处理。 JavaScript的Date对象 JavaScript内置了Date对象来处理日期与时间。Date…

    JavaScript 2023年6月10日
    00
  • JS.elementGetStyle(element, style)应用示例

    下面就详细讲解一下“JS.elementGetStyle(element, style)应用示例”的完整攻略。 标题 首先,我们需要用到的是“JS.elementGetStyle(element, style)”函数。这个函数是获取一个元素的样式属性值的通用方法。 代码示例 我们可以通过以下代码示例来说明这个函数的使用: var element = docu…

    JavaScript 2023年6月10日
    00
  • 原生js+ajax分页组件

    下面我详细讲解一下如何实现“原生js+ajax分页组件”。 前置知识 在实现分页组件之前,需要对以下几个知识点有一定的了解。 原生JS的DOM操作 Ajax异步请求及响应 分页算法 分页算法 分页算法是分页组件实现的核心。下面介绍两种常见的分页算法。 基本分页算法 基本分页算法的实现非常简单,直接根据当前页码和每页显示数量计算出起始记录的位置和结束位置,再将…

    JavaScript 2023年6月11日
    00
  • 详解JavaScript 浮点数运算的精度问题

    详解JavaScript 浮点数运算的精度问题 JavaScript 中的浮点数运算经常会出现精度问题,这是因为计算机存储小数时采用的是二进制,而在二进制表示下并不能精确地表示所有的十进制小数。 浮点数存储机制 JavaScript 中的浮点数采用 IEEE 754 标准,用 64 位二进制数表示,其中第 0 位表示符号位,第 1 至 11 位表示指数,第 …

    JavaScript 2023年5月28日
    00
  • javascript中的关于类型转换的性能优化

    当在JavaScript中处理各种类型的数据时,类型转换是不可避免的。由于JavaScript的动态类型特性,有时候需要将一种数据类型转换为另一种数据类型。然而,频繁的类型转换往往会导致性能损失。因此,我们需要优化这些类型转换,以提高代码的运行效率。 以下是关于在JavaScript中进行类型转换的性能优化的攻略: 1. 显式类型转换 在JavaScript…

    JavaScript 2023年6月10日
    00
  • JavaScript鼠标特效大全

    如果你想为自己的网站增加一些动感和互动性,可以考虑在网站中添加一些JavaScript鼠标特效。这些特效可以使你的网站更加吸引人,让用户留下深刻的印象。在这里,我将为大家介绍一些JavaScript鼠标特效的实现方法和示例。 实现方法 1. 使用CSS伪类:hover CSS伪类:hover可以检测鼠标的悬停状态,我们可以利用这个特性来实现一些动态效果。下面…

    JavaScript 2023年6月11日
    00
  • Backbone.js框架中Model与Collection的使用实例

    首先我们先来简单介绍一下Backbone.js框架。Backbone.js是一个轻量级的JavaScript框架,它提供了MVC(Model-View-Controller)的架构,方便我们在前端开发过程中管理数据状态和逻辑。在Backbone.js框架中,最常用的两个组件是Model和Collection。 Model:Model是指一个数据模型,它相当于…

    JavaScript 2023年6月10日
    00
  • Javascript中获取对象的原型对象的方法小结

    获取对象的原型对象是JavaScript中常见的操作,下面介绍一些获取对象的原型对象的方法。 方法一:使用Object.getPrototypeOf Object.getPrototypeOf() 方法返回指定对象的原型(内部[[Prototype]]属性的值)。 示例代码: const obj = {}; const proto = Object.getP…

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