iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >JavaScriptonclick与addEventListener使用的区别介绍
  • 406
分享到

JavaScriptonclick与addEventListener使用的区别介绍

2024-04-02 19:04:59 406人浏览 薄情痞子
摘要

目录摘要区别同时绑定多个事件决定事件触发顺序removeEventListener的使用方法摘要 当我们想要给某个DOM元素绑定事件的时候,最常用的方法是通过on + 事件名字的方式

摘要

当我们想要给某个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区别内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: JavaScriptonclick与addEventListener使用的区别介绍

本文链接: https://www.lsjlt.com/news/166639.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • JavaScriptonclick与addEventListener使用的区别介绍
    目录摘要区别同时绑定多个事件决定事件触发顺序removeEventListener的使用方法摘要 当我们想要给某个DOM元素绑定事件的时候,最常用的方法是通过on + 事件名字的方式...
    99+
    2024-04-02
  • window.navigate 与 window.location.href 的使用区别介绍
    首先说明的是 window.navigate 与 window.location.href 都是实现页面链接跳转的,下面将介绍它们的区别。 window.navigate("http...
    99+
    2022-11-15
    navigate location.href
  • npm与cnpm的区别介绍
    NPM(Node Package Manager,节点包管理器)是NodeJS的包管理器,用于节点插件的管理(包括安装,卸载和管理依赖等)。NPM是随同新版的NodeJS一起安装的包管理工具,所以我们需要安装NodeJS。NPM的常见使用场...
    99+
    2023-06-03
  • MySQL中in与exists的使用及区别介绍
    先放一段代码 for(int i=0;i<1000;i++){ for(int j=0;j<5;j++){ System.out.println("hello"); } } for...
    99+
    2024-04-02
  • Andriod Service与Thread的区别介绍
    首先,我们需要明确Service是运行在主线程的,不能有耗时操作,这样,在Service中处理耗时操作的时候,我们依然需要使用线程来处理。既然在Service里也要创建一个子线程,那为什么不直接在Activity里创建呢?这是因为A...
    99+
    2023-05-31
    android service thread
  • Node.js 中的 module.exports 与 exports区别介绍
    目录介绍示例从源码中理解通过示例理解示例一示例二示例三示例四小结介绍 module:每个模块中都有 module 对象,存放了当前模块相关的信息;module.e...
    99+
    2024-04-02
  • 云主机与vps的区别介绍
    本篇内容主要讲解“云主机与vps的区别介绍”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“云主机与vps的区别介绍”吧! 云主机和vps有哪些区别呢下面小编从以下六个方面为大家介绍。VP...
    99+
    2023-06-07
  • 解析java.library.path和LD_LIBRARY_PATH的介绍与区别
    背景 近期要将算法部署到一个机群的虚拟主机(Debian 9.1 gcc 6.3.0)上,采用的是Java + JNI + shared library的方式来完成底层算法能力的部署...
    99+
    2024-04-02
  • ASP.NET Core MVC中Required与BindRequired用法与区别介绍
    在开发ASP.NET Core MVC应用程序时,需要对控制器中的模型校验数据有效性,元数据注释(Data Annotations)是一个完美的解决方案。 元数据注释最典型例子是确保...
    99+
    2024-04-02
  • VUE中的v-if与v-show区别介绍
    1.共同点 都是动态显示DOM元素 2.区别 (1)手段:v-if是动态的向DOM树内添加或者删除DOM元素;v-show是通过设置DOM元素的display样式属性控制显隐;(2)...
    99+
    2024-04-02
  • B/S与C/S架构的区别介绍
    1.系统架构包括哪些形式? C/S架构 B/S架构 2.什么是C/S架构? 说白了就是客户端/服务端,我们需要安装特定的客户端软卷,例如:QQ。 C/S架构的...
    99+
    2024-04-02
  • SQLite与MySQL区别及优缺点介绍
    简单来说,SQLITE功能简约,小型化,追求最大磁盘效率;MYSQL功能全面,综合化,追求最大并发效率。如果只是单机上用的,数据量不是很大,需要方便移植或者需要频繁读/写磁盘文件的话...
    99+
    2024-04-02
  • 浅析Bean Searcher 与 MyBatis Plus 区别介绍
    目录区别一(基本)区别二(高级查询)1)使用 MyBatis Plus 查询:2)使用 Bean Searcher 查询:区别三(逻辑分组)区别四(多表联查)区别五(使用场景)疑问1...
    99+
    2024-04-02
  • Python常用编码的区别介绍
    Python2内容默认ascii进行编码,而Python3对内容进行编码的默认为utf-8。这个编码问题,也不是Python的问题,所有语言都有乱码的问题,所以今天主要跟大家聊聊这4...
    99+
    2024-04-02
  • JS中ESModule和commonjs介绍及使用区别
    目录ES Module导出仅导出重导出(re-exporting / aggregating)嵌入式脚本引入语法嵌入式脚本特点commonJS导出引入特点值拷贝ES Module和 ...
    99+
    2024-04-02
  • ResultSet的介绍与使用
    ResultSet是Java中用于表示数据库查询结果的对象,它可以对查询结果进行遍历和访问。一般来说,当使用JDBC进行数据库查询时...
    99+
    2023-09-11
    ResultSet
  • insert into select和select into的使用和区别介绍
    insert into ... select ...:可将表1中的全部数据或者部分数据复制到表2中。 eg: 复制代码 代码如下: insert into t2(id,na...
    99+
    2022-11-15
    insert select into
  • ASP.NET Core中Razor页面与MVC区别介绍
    作为.NET Core 2.0发行版的一部分,还有一些ASP.NET的更新。其中之一是添加了一个新的Web框架来创建“页面”,而不需要复杂的ASP.NET M...
    99+
    2024-04-02
  • python 集合set中 add与update区别介绍
    集合set是一个无序不重复元素的集 set(['hello','hello','hi']) # {'hello', 'hi'} set('hello hello hi') # {...
    99+
    2024-04-02
  • golang协程与线程区别简要介绍
    目录一、进程与线程二、并发与并行三、go协程与线程1.调度方式2.调度策略3.上下文切换速度4.栈的大小四、GMP模型一、进程与线程 进程是操作系统资源分配的基本单位,是程序运行的实...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作