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日

相关文章

  • JS 作用域与作用域链详解

    当我们使用 JavaScript 编写代码时,经常会遇到变量作用域的问题,这个时候就需要了解 JavaScript 的作用域与作用域链。了解 JavaScript 的作用域与作用域链,可以帮助我们更好地理解 JavaScript 代码运行的流程,从而提高编程效率和代码质量。 一、作用域 1.1 什么是作用域 作用域是指变量和函数的可访问范围。JavaScri…

    JavaScript 2023年6月10日
    00
  • JavaScript中的简写语法分享

    当我们在写JavaScript代码的时候,经常会用到一些简写语法来简化代码、提高开发效率。在本篇文章中,我们将会分享一些JavaScript中的简写语法,帮助大家学会如何更加高效地编写JavaScript代码。 一、三元运算符简写 三元运算符通常用于处理条件分支,可以把一个简单if-else语句变得更加简洁。在三元运算符的基础上,我们还可以使用它的简写形式。…

    JavaScript 2023年6月10日
    00
  • js图片延迟加载的实现方法及思路

    什么是图片延迟加载? 图片延迟加载是一种优化网页性能的技术,又称为“图片懒加载”。在传统的页面加载中,页面中的图片是同步加载的,也就是在页面加载过程中,所有的图片都会被下载并渲染。然而,在某些时候,页面的某些图片并不是必要的,或者在用户刚打开页面时不可见,此时就会浪费用户的流量和时间。 图片延迟加载,是指在页面滚动到某个位置或者某个时间点再去加载图片。当用户…

    JavaScript 2023年6月11日
    00
  • JS如何实现基于websocket的多端桥接平台

    实现基于websocket的多端桥接平台,可以采用前后端分离的架构,前端通过websocket与后端进行双向数据通信,从而实现多端之间的桥接。具体步骤如下: 后端实现websocket服务 首先,在后端实现websocket服务,可以使用Node.js + socket.io来实现。Node.js提供了事件驱动的非阻塞I/O模型,使得我们可以轻松地创建异步的…

    JavaScript 2023年6月10日
    00
  • Javascript中call和apply函数的比较和使用实例

    介绍 在 JavaScript 中,我们可以使用 call 和 apply 函数来改变函数运行时的上下文环境(this指向)以及传递函数所需的参数。call 和 apply 的作用类似,不同之处在于传参方式的不同。 call 函数传入的参数可以是多个单独的参数,而 apply 函数传入的参数必须是一个数组。 语法 函数.call(执行上下文, arg1, a…

    JavaScript 2023年6月11日
    00
  • ES6知识点整理之对象解构赋值应用示例

    ES6知识点整理之对象解构赋值应用示例是一篇介绍ES6对象解构赋值应用的文章,下面我分步讲解一下。 一、文章简介 该文章主要介绍了ES6对象解构赋值的基础概念和应用示例,阐述了对象解构赋值在数据结构中的优势,进而说明了如何使用对象解构赋值美化代码。 二、对象解构赋值的基础概念 在 ES6 中,对象解构赋值是一种语法,通过这种语法,可以在一行代码中将一个对象中…

    JavaScript 2023年5月27日
    00
  • js使用xlsx读取excel文件的详细步骤

    下面是使用JavaScript中XLSX库读取Excel文件的详细步骤。 第一步:引入XLSX库 在HTML文件中,需要在<head>标签内添加如下代码引入XLSX: <script src="https://cdn.jsdelivr.net/npm/xlsx/dist/xlsx.full.min.js"><…

    JavaScript 2023年5月27日
    00
  • 常见的原始JS选择器使用方法总结

    常见的原始JS选择器使用方法总结 选择器是 JavaScript 编程中非常重要的一部分。选择器是用于访问和操作文档中的 HTML 元素的方法。 在 JavaScript 中,有多种类型的选择器,其中包含了基础选择器、层级选择器、伪选择器等。本文将总结常见的原始 JavaScript 选择器使用方法。 基础选择器 基础选择器是 JavaScript 中最常用…

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