0

0

怎么给元素添加事件?JS绑定事件三种方式解析

青灯夜游

青灯夜游

发布时间:2022-08-04 19:27:10

|

5088人浏览过

|

来源于c语言中文网

转载

javascript作为脚本语言, 可以为页面上的元素绑定事件,用于在指定事件发生时能自动调用相应的事件处理程序处理事件。那么怎么给元素添加事件?下面本篇文章给大家介绍一下js绑定事件三种方式,希望对大家有所帮助!

怎么给元素添加事件?JS绑定事件三种方式解析

为了使浏览器在事件发生时能自动调用相应的事件处理程序处理事件,需要对事件源绑定事件处理程序(绑定事件处理程序也叫注册事件处理程序)。

绑定事件处理程序有以下 3 种方式:

  • 在 HTML 标签中,使用事件属性(例onclick)绑定事件处理程序。该方式通过设置标签的事件属性值为事件处理程序。这种方法现在不推荐使用, html 和 js 耦合, 不利于维护。

  • 在 js 中,使用事件源的事件属性(例onclick)绑定事件处理函数。该方式通过设置事件源对象的事件属性值为事件处理函数。

  • 在 js 中,使用 addEventListener() 方法绑定事件和事件处理函数(IE9 之前的版本则使用 attach Event() 方法)。

1、使用HTML标签的事件属性绑定处理程序

需要注意的是,使用 HTML 标签的事件属性绑定事件处理程序的方式时,事件属性中的脚本代码不能包含函数声明,但可以是函数调用或一系列使用分号分隔的脚本代码。

【例 1】使用 HTML 标签的事件属性绑定事件处理程序。





使用HTML标签的事件属性绑定事件处理程序


     

上述代码的 button 为 click 事件的目标对象,其通过标签的事件属性 onclick 绑定了两条脚本代码进行事件的处理。上述代码在 Chrome 浏览器的运行后,当用户单击按钮时,将弹出警告对话框,结果如下图所示。

1.png

当事件处理程序涉及的代码在 2 条以上时,如果还像示例 1 那样绑定事件处理程序,会使程序的可读性变得很差。对此,可以将事件处理程序定义为一个函数,然后在事件属性中调用该函数。

【例 2】HTML 标签的事件属性为函数调用。





HTML标签的事件属性为函数调用



     

上述代码的执行结果和示例 1 完全相同。从上述两个示例可以看到,标签事件属性将 JS 脚本代码和 HTML 标签混合在一起,违反了 Web 标准的 JS 和 HTML 应分离的原则。所以,使用 HTML 标签的事件属性绑定事件处理程序不好,在实际应用时应尽量避免使用。

2、使用事件源的事件属性绑定处理程序

使 HTML 和 JS 分离的其中一种方式是通过使用事件源的事件属性绑定事件处理函数,绑定格式如下:

obj.on事件名 = 事件处理函数

格式中的 obj 为事件源对象。绑定的事件程序通常为一个匿名函数的定义语句,或者是一个函数名称。

事件源的事件属性绑定处理程序示例:

oBtn.onclick = function(){//oBtn为事件源对象,它的单击事件绑定了一个匿名函数定义
      alert('hi')
};

【例 3】使用事件源的事件属性绑定事件处理函数。

MagickPen
MagickPen

在线AI英语写作助手,像魔术师一样在几秒钟内写出任何东西。

下载




使用事件源的事件属性绑定事件处理函数



   
   

上述 JS 代码中处理了 3 个事件:文档窗口加载事件 load、两个按钮的单击事件 click。这三个事件的处理都是使用事件源的事件属性绑定事件处理函数来实现的,其中 load 事件和第一个按钮的click事件绑定的是匿名函数,而第二个按钮的click事件绑定的是一个函数名。

需要特别注意的是,不能在 oBtn2 绑定的函数名后面加“()”,否则绑定的函数变为函数调用,这样就会在 JS 引擎执行到该行代码时自动调用执行,而在事件触发时却不会执行了。

在文档所有元素加载完成后会处理窗口加载事件函数,而单击每个按钮时将会触发单击事件。单击第一个和第二个按钮后,将分别弹出显示“hi”和“hello”两个警告对话框。

2.png

3.png

3、使用addEventListener()绑定处理程序

使用事件源对象的事件属性绑定事件处理程序方式虽然简单,但其存在一个不足之处:一个事件只能绑定一个处理程序,后面绑定的事件处理函数会覆盖前面绑定的事件处理函数。实际应用中,一个事件源的一个事件可能会用到多个函数来处理。

当一个事件源需要使用多个函数来处理时,可以通过事件源调用 addEventListener()(针对标准浏览器)来绑定事件处理函数以实现此需求。一个事件源通过方法绑定多个事件函数的实现方式是:对事件源对象调用多次 addEventListener(),其中每次的调用只绑定一个事件处理函数。

addEventListener() 是标准事件模型中的一个方法,对所有标准浏览器都有效。使用 addEvent Liste ner() 绑定事件处理程序的格式如下:

事件源.addEventListener(事件名称,事件处理函数名,是否捕获);

参数“事件名称”是一个不带“on”的事件名;参数“是否捕获”是一个布尔值,默认值为 false,取 false 时实现事件冒泡,取 true 时实现事件捕获。

通过多次调用 addEventListener() 可以为一个事件源对象的同一个事件类型绑定多个事件处理函数。当对象发生事件时,所有该事件绑定的事件处理函数就会按照绑定的顺序依次调用执行。另外,需要注意的是,addEventListener() 绑定的事件处理函数中的 this 指向事件源。

addEventListener() 绑定处理程序示例:

document.addEventListener('click',fn1,false);//click事件绑定fn1函数实现事件冒泡
document.addEventListener('click',fn2,true);//click事件绑定fn2函数实现事件捕获

【例 4】使用 addEventListener() 绑定事件函数。





使用addEventListener()/attachEvent()绑定事件函数




上述代码在浏览器中运行后,当单击文档窗口时,会依次弹出显示“fn1()”和“fn2()”的警告对话框。

4.png

5.png

【推荐学习:javascript高级教程

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
chrome什么意思
chrome什么意思

chrome是浏览器的意思,由Google开发的网络浏览器,它在2008年首次发布,并迅速成为全球最受欢迎的浏览器之一。本专题为大家提供chrome相关的文章、下载、课程内容,供大家免费下载体验。

836

2023.08.11

chrome无法加载插件怎么办
chrome无法加载插件怎么办

chrome无法加载插件可以通过检查插件是否已正确安装、禁用和启用插件、清除插件缓存、更新浏览器和插件、检查网络连接和尝试在隐身模式下加载插件方法解决。更多关于chrome相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

744

2023.11.06

js正则表达式
js正则表达式

php中文网为大家提供各种js正则表达式语法大全以及各种js正则表达式使用的方法,还有更多js正则表达式的相关文章、相关下载、相关课程,供大家免费下载体验。

514

2023.06.20

js获取当前时间
js获取当前时间

JS全称JavaScript,是一种具有函数优先的轻量级,解释型或即时编译型的编程语言;它是一种属于网络的高级脚本语言,主要用于Web,常用来为网页添加各式各样的动态功能。js怎么获取当前时间呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

244

2023.07.28

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

298

2023.08.03

js是什么意思
js是什么意思

JS是JavaScript的缩写,它是一种广泛应用于网页开发的脚本语言。JavaScript是一种解释性的、基于对象和事件驱动的编程语言,通常用于为网页增加交互性和动态性。它可以在网页上实现复杂的功能和效果,如表单验证、页面元素操作、动画效果、数据交互等。

5314

2023.08.17

js删除节点的方法
js删除节点的方法

js删除节点的方法有:1、removeChild()方法,用于从父节点中移除指定的子节点,它需要两个参数,第一个参数是要删除的子节点,第二个参数是父节点;2、parentNode.removeChild()方法,可以直接通过父节点调用来删除子节点;3、remove()方法,可以直接删除节点,而无需指定父节点;4、innerHTML属性,用于删除节点的内容。

481

2023.09.01

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

212

2023.09.04

java入门学习合集
java入门学习合集

本专题整合了java入门学习指南、初学者项目实战、入门到精通等等内容,阅读专题下面的文章了解更多详细学习方法。

1

2026.01.29

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
React 教程
React 教程

共58课时 | 4.3万人学习

TypeScript 教程
TypeScript 教程

共19课时 | 2.5万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 3.1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号