JavaScript的事件监听

事件监听是计算机编程中的一个重要概念,特别是在图形用户界面(GUI)编程和网络编程中。它涉及到设置一个或多个监听器(也称为事件处理器或回调函数)等待特定事件的发生,并在事件发生时执行相应的操作或响应。

事件监听是构建交互式应用程序的关键部分。它允许程序根据用户的输入或系统状态的变化做出响应,从而提供更加丰富和动态的用户体验。

1、事件

事件是某个特定动作或状态变化的信号。事件可能由用户交互(如点击按钮或移动鼠标)触发,或由系统状态变化(如文件被修改或网络连接断开)触发。事件是程序执行流程中的一个关键点,通常与事件监听器一起使用,以改变程序的正常执行流程。

2、事件监听

事件监听是一种机制,用于检测特定事件的发生并在事件发生时执行相应的代码。具体来说,事件监听器是一个程序组件,它等待特定事件(如用户点击或系统状态变化)的发生。一旦事件被触发,事件监听器就会执行其关联的事件处理函数(或称为回调函数),以响应事件。

事件监听通常包括以下步骤:

  1. 定义事件处理函数:这是将在事件发生时执行的代码。它可以是简单的函数,也可以是更复杂的操作序列。
  2. 注册事件监听器:将事件处理函数与特定事件关联起来。这通常涉及将事件处理函数绑定到某个对象或应用程序的特定部分。
  3. 等待事件触发:一旦事件监听器被注册,它就会开始等待相关事件的发生。这可以是用户交互,也可以是系统状态的变化。
  4. 执行事件处理函数:当事件被触发时,事件监听器会调用其关联的事件处理函数,并执行相应的代码。

3、JavaScript事件绑定

  • 方式一:通过 HTML标签中的事件属性进行绑定

定义一个按钮元素,在该标签上定义事件属性,在事件属性中绑定函数。onclick就是单击事件的事件属性。οnclick='on()'表示该点击事件绑定了一个名为 on()的函数。

  • 方式二:通过 DOM 元素属性绑定

按钮标签上不使用事件属性,绑定事件的操作在 JavaScript代码中实现,JS代码获取id='btn'的元素对象,然后将onclick作为该对象的属性,并且绑定匿名函数,函数在事件触发后自动执行。

绑定匿名函数:将一个没有名字的函数绑定到某个对象或事件上。

匿名函数通常用于一次性操作,不需要在代码的其他地方引用该函数。通过绑定,可以使这个匿名函数在特定的事件或条件下被调用。在JavaScript中,匿名函数非常常见,特别是在事件监听器和回调函数中。

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><!--方式1:在input标签上添加 onclick 属性,并绑定 on() 函数--><input type="button" value="点我" onclick="on()"> <br><input type="button" value="再点我" id="btn"><script>function on(){alert("点");}<!--方式2:获取 id="btn" 元素对象,通过调用 onclick 属性 绑定点击事件-->document.getElementById("btn").onclick = function (){alert("点点点");}</script>
</body>
</html>

4、事件属性有哪些

事件属性名描述
onclick鼠标单击事件
onblur元素失去焦点
onfocus元素获得焦点
onload某个页面或图像被完成加载
onsubmit当表单提交时触发该事件
onmouseover鼠标被移到某元素之上
onmouseout鼠标从某元素移开

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/805378.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL数据库——6、删除数据表

在 MySQL 数据库删除数据表 删除一个数据表&#xff0c;使用 SQL 命令 DROP TABLE。 DROP TABLE 命令允许从数据库中永久删除指定的数据表及其所有数据。 DROP TABLE table_name; table_name 是要删除的数据表的名称。 例如&#xff0c;要删除名为 users 的数据表&#xf…

Android 14 vold 分析(2)VolumeManager 和 NetlinkManger

3. VolumeManager::Instance() 和 VolumeManager::start() system/vold/VolumeManager.cpp 3.1 Instance()没啥好说的 非常简单 112 VolumeManager* VolumeManager::Instance() {113 if (!sInstance) sInstance new VolumeManager();114 return sInst…

人脸识别业务(基于腾讯人脸识别接口)

使用腾讯云人脸识别接口&#xff0c;基于优图祖母模型。 一、准备工作 人脸识别账号 申请腾讯云服务器账号&#xff0c;生成自己的秘钥。记录秘钥和秘钥ID。 创建人员库 记下人员库id 在配置文件application.yml中添加配置。 plateocr:SecretId: 秘钥IDSecretKey: 秘钥ser…

红队内网攻防渗透:内网渗透之域内横向移动攻击技术

红队内网攻防渗透 常用windows远程连接和相关命令1.IPC1.首先建立一个IPC连接2.net use 查看当前连接3.ipc\$利用条件:4.ipc\$连接失败原因:5.常见错误号:2.ipc连接获取远程主机信息1.dir列出远程主机文件2.tasklist命令列出目标主机上运行的进程3.IPC计划任务攻击流程at命令…

Day1 省选衔接题 思路总结

Day1 省选题 思路 取数 可反悔的贪心。我们开一个双向链表记录此时每个数的前/后一个数是什么。一个简单但不一定正确的贪心策略即为&#xff1a;每次都取走当前值最大的且可取的数&#xff0c;并更新列表。考虑如何使这个贪心思路正确。 设 p r e x pre_x prex​ 表示 x x …

Path Aggregation Network for Instance Segmentation

PANet 摘要1. 引言2.相关工作3.框架 PANet 最初是为 proposal-based 实例分割框架提出来的&#xff0c;mask 是实例的掩码&#xff0c;覆盖了物体包含的所有像素&#xff0c;proposal 在目标检测领域是可能存在目标的区域。在实例分割中&#xff0c;首先利用RPN(Region Proposa…

深入理解Java中的字段与属性的区别

1、Java中的属性和字段有什么区别&#xff1f; 答&#xff1a;Java中的属性(property)&#xff0c;通常可以理解为get和set方法。 而字段(field)&#xff0c;通常叫做“类成员”&#xff0c;或 "类成员变量”&#xff0c;有时也叫“域”&#xff0c;理解为“数据成员”&…

c语言字符串函数(模拟实现)

用递归的方式完成strlen int my_len(const char* str) { static int count; assert(str);//能够判断为不为空指针 if (*str ! \0) { my_len(str); return count; } else { count 0; return count;;//真正的strlen是unsi…

练习题(2024/4/10)

1. 删除有序数组中的重复项 给你一个 非严格递增排列 的数组 nums &#xff0c;请你 原地 删除重复出现的元素&#xff0c;使每个元素 只出现一次 &#xff0c;返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。 考虑 nums 的唯一元…

2022年蓝桥杯省赛——直线

目录 题目链接&#xff1a;11.直线 - 蓝桥云课 (lanqiao.cn) 题目描述 思路 代码思路如下 代码实现 坑来喽~~ 导致这个BUG的原因&#xff01;&#xff01;&#xff01; 总结 整体的 两种b的情况对比数据 题目链接&#xff1a;11.直线 - 蓝桥云课 (lanqiao.cn) 题目描…

一文搞懂计算机视觉模型

计算机视觉&#xff0c;这个曾经让科学家们望而生畏的领域&#xff0c;如今在深度学习的加持下&#xff0c;正迎来前所未有的发展。你是否好奇&#xff0c;是哪些深度学习模型让计算机拥有了“慧眼”&#xff1f;让我们一起揭开这些模型的神秘面纱。 /1 卷积神经网络 (CNNs)。…

分库,分表,分区,分片

MySQL&#xff1a; 是一个开源的关系型数据库管理系统&#xff0c;主要用于存储和管理数据。它提供了命令行接口&#xff0c; SQLyog&#xff1a; 是一个图形化的客户端软件&#xff0c;专门用于管理和操作MySQL数据库。 它提供了一个直观的用户界面&#xff0c;简化了MySQL数据…

JVM面试整理--对象的创建和堆

文章目录 对象的创建过程是怎样的?对象在内存中的结构是怎样的&#xff08;专业的叫法&#xff1a;对象的内存布局&#xff09;对象在内存分配时使用的哪种方式&#xff08;有的地方也称为&#xff1a;分配算法&#xff09;知道什么是“指针碰撞”吗&#xff1f;知道什么是“空…

LeetCode 80—— 删除有序数组中的重复项 II

阅读目录 1. 题目2. 解题思路3. 代码实现 1. 题目 2. 解题思路 让 index指向删除重复元素后数组的新长度&#xff1b;让 st_idx 指向重复元素的起始位置&#xff0c;而 i 指向重复元素的结束位置&#xff0c;duplicate_num代表重复元素的个数&#xff1b;一段重复元素结束后&am…

php校园活动报名系统vue+mysql

开发语言&#xff1a;php 后端框架&#xff1a;Thinkphp/Laravel 前端框架&#xff1a;vue.js 服务器&#xff1a;apache 数据库&#xff1a;mysql 运行环境:phpstudy/wamp/xammp等本选题则旨在通过标签分类管理等方式&#xff0c;管理员&#xff1b;首页、个人中心、学生管理、…

如何从零开始训练一个语言模型

如何从零开始训练一个语言模型 #mermaid-svg-gtUlIrFtNPw1oV5a {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-gtUlIrFtNPw1oV5a .error-icon{fill:#552222;}#mermaid-svg-gtUlIrFtNPw1oV5a .error-text{fill:#5522…

Redis 缓存穿透、缓存击穿、缓存雪崩区别和解决方案

缓存穿透 什么是缓存穿透&#xff1f; 缓存穿透说简单点就是大量请求的 key 是不合理的&#xff0c;根本不存在于缓存中&#xff0c;也不存在于数据库中 。这就导致这些请求直接到了数据库上&#xff0c;根本没有经过缓存这一层&#xff0c;对数据库造成了巨大的压力&#xf…

2、Qt UI控件 -- qucsdk项目使用

前言&#xff1a;上一篇文章讲了qucsdk的环境部署&#xff0c;可以在QDesigner和Qt Creator中看到qucsdk控件&#xff0c;这一篇来讲下在项目中使用qucsdk库中的控件。 一、准备材料 要想使用第三方库&#xff0c;需要三个先决条件&#xff0c; 1、控件的头文件 2、动/静态链…

【C++造神计划】定义常量

1 宏常量&#xff08;macro constants&#xff09; 使用预处理器指令 #define 可以将那些经常使用的常量定义为你自己取的名字而不需要借助于变量 编译器在遇到 #define 指令的时候&#xff0c;做的只是把任何出现这些常量名的地方替换成它们被定义为的代码 #define 指令不是…

rollup 插件架构-装饰器模式增添插件性能分析

文章目录 输入 rollup 配置根据用户配置开启插件性能分析性能分析函数实现分级输出结果装饰器模式拓展组件 输入 rollup 配置 初始化计时器&#xff0c;构建完成时输出每个阶段的耗时、内存占用等信息,会 wrapper 相应 hook 方法&#xff0c;添加计时相关功能 initialiseTime…