我的编程空间,编程开发者的网络收藏夹
学习永远不晚

JavaScriptonclick与addEventListener使用的区别介绍

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

JavaScriptonclick与addEventListener使用的区别介绍

摘要

当我们想要给某个DOM元素绑定事件的时候,最常用的方法是通过on + 事件名字的方式。而在DOM2级事件定义了两个方法,用于处理指定和删除事件处理程序的操作:

addEventListener()和removeEventListener().

并且它们都接受三个参数:要处理的事件名,作为事件处理的一个函数,一个布尔值。

最后的布尔值如果为false,表示在冒泡阶段调用事件处理函数,如果是true,表示在捕获阶段调用事件处理程序。

区别

同时绑定多个事件

我们来想一个问题,我们使用onclick方法可不可以给一个按钮绑定多个事件呢?

我们来尝试一下:

    <button id="btn">点击</button>
    <script>
        btn.onclick = function(){
            console.log('第一次点击');
        }
        btn.onclick = function(){
            console.log('第二次点击');
        }
    </script>

然后我们来看一下结果是否两次都打印出来了:

可以看到只有第二次生效了,说明通过这种方法第二次绑定事件会将第一次覆盖!

现在我们来用第二种方法:

    <button id="btn">点击</button>
    <script>
        btn.addEventListener('click',()=>{console.log('第一次点击');},false);
        btn.addEventListener('click',()=>{console.log('第二次点击'),false});
    </script>

我们来看一下运行结果:

OK,可以看到通过这种方式我们是可以进行多次绑定事件的。

决定事件触发顺序

我们先来看一下代码:

    <div id="div1">
        <button id="btn">点击</button>
    </div>
    <script>
        div1.onclick = function(){
            console.log('div1的事件');
        }
        btn.onclick = function(){
            console.log('btn的事件');
        }
    </script>

想一下如果我们点击了按钮,打印的顺序应该是什么样子的呢?

可以看到是从内而外,是以事件冒泡的方式来执行的。

而如果使用另一种方法:

    <div id="div1">
        <button id="btn">点击</button>
    </div>
    <script>
        btn.onclick = function(){
            console.log('btn的事件');
        }
        div1.addEventListener('click',()=>{console.log('div1的事件');},true);
    </script>

我现在把div1的事件通过addEventListener的方式来绑定,并且给第三个参数设置为true。

那么结果就是这样的:

所以我们通过第二种方法我们可以决定DOM事件的触发是以事件捕获的事件流还是事件冒泡的事件流方式。

removeEventListener的使用方法

这个方法就是删除DOM指定的事件,如果我们删除onclick的话,直接将onclick的值设置为null就可以了。

那这个方法如何删除呢?我们来看一下代码:

        div1.addEventListener('click',()=>{console.log('div1的事件');},true);
        div1.removeEventListener('click',()=>{console.log('div1的事件');},true);

这样做的话我们是否能将这个事件删除呢?答案是否定的,我们的两个事件处理程序虽然代码是一样的,但是它们确确实实不是一个事件处理程序,如果我们想要删除掉某个事件,我们必须这样做:

        var fn = function(){
            console.log('div1的事件');
        }
        div1.addEventListener('click',fn,true);
        div1.removeEventListener('click',fn,true);

只有这样才能确定两个方法所用的为一段事件处理程序,也是有效的删除方法。

到此这篇关于JavaScript onclick与addEventListener使用的区别介绍的文章就介绍到这了,更多相关JS onclick与addEventListener区别内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

JavaScriptonclick与addEventListener使用的区别介绍

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

window.navigate 与 window.location.href 的使用区别介绍

首先说明的是 window.navigate 与 window.location.href 都是实现页面链接跳转的,下面将介绍它们的区别。感兴趣的朋友可以参考下
2022-11-15

npm与cnpm的区别介绍

NPM(Node Package Manager,节点包管理器)是NodeJS的包管理器,用于节点插件的管理(包括安装,卸载和管理依赖等)。NPM是随同新版的NodeJS一起安装的包管理工具,所以我们需要安装NodeJS。NPM的常见使用场
2023-06-03

Andriod Service与Thread的区别介绍

首先,我们需要明确Service是运行在主线程的,不能有耗时操作,这样,在Service中处理耗时操作的时候,我们依然需要使用线程来处理。既然在Service里也要创建一个子线程,那为什么不直接在Activity里创建呢这是因为Activi
2023-05-31

云主机与vps的区别介绍

本篇内容主要讲解“云主机与vps的区别介绍”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“云主机与vps的区别介绍”吧! 云主机和vps有哪些区别呢?下面小编从以下六个方面为大家介绍。VPS(Vi
2023-06-07

insert into select和select into的使用和区别介绍

insert into ... select 和 select ... into的使用上有哪些区别呢?在本文将为大家下详细介绍下,不知道的朋友可以了解下
2022-11-15

ResultSet的介绍与使用

ResultSet是Java中用于表示数据库查询结果的对象,它可以对查询结果进行遍历和访问。一般来说,当使用JDBC进行数据库查询时,会返回一个ResultSet对象来表示查询结果。ResultSet对象提供了一系列方法来操作查询结果,包括
2023-09-11

win7家庭版与win7旗舰版的区别介绍

大家都知道win7系统有很多种版本,比如win7旗舰版、win7专业版、win7家庭版等,有不少用户在家庭版和旗舰版之间纠结,不知道选择哪个版本比较好,所以今天小编来跟大家说说win7家庭餐与win7旗舰版的区别介绍,大家一起来看看吧。1、
2023-07-12

关于MVC与SpringMVC的介绍、区别、执行流程

这篇文章主要介绍了关于MVC与SpringMVC的介绍、区别、执行流程,MVC框架的主要目标是将应用程序的业务逻辑(Model)与用户界面(View)分离开来,从而提高应用程序的可维护性和可扩展性,需要的朋友可以参考下
2023-05-19

编程热搜

目录