JavaScript onclick 和 click 的区别详解

 更新时间:2021年10月14日 15:41:12   作者:ghimi  
onclick是绑定事件,click本身是方法作用是触发onclick事件,只要执行了元素的click()方法,本片文章讲的很详细,大家可以看看,希望能够给你带来帮助

也就是 addEventListener on 的区别

为什么需要 addEventListener?

先来看一个片段:

<div id ="box">测试</div>

用 on 的代码:

windwo.onload = function(){
  var box = document.getElementById("box");
  box.onclick = ()=>console.log("我是 box1");
  box.onclick = ()=>console.log("我是 box2");
}
// 运行结果 : 我是 box2

看到了吧,第二个 onclick 事件把第一个onclick 给覆盖了,虽然大部分情况我们用 on 就可以完成我们想要的效果,但是有时我们又需要执行多个相同的事件,很明显如果用 on 是无法实现的。但是可以使用 addEventListener 实现多次绑定同一个事件并且不会覆盖上一个事件。

用 addEventListener 的代码

window.onload = function(){
  var box = document.getElementById("box");
  box.addEventListener("click",()=>console.log("我是 box1"));
  box.addEventListener("click",()=>console.log("我是 box2"));
}
// 运行结果: 我是 box1
            //我是 box2

addEventListener 方法第一个参数填写事件名,注意不需要写 on ,第二个参数可以是一个函数,第三个参数是指在冒泡阶段还是捕获处理事件程序,如果为 true 代表捕获阶段处理,如果是 false代表冒泡阶段处理,第三个参数可以省略,大多数情况也不需要用到第三个参数,不写第三个参数默认false。

第三个参数的使用

有时候的情况是这样的:

<body>
  <div id = "box">
    <div id = "child"></div>
  </div>
</body>

如果我给 box 加 cclick 时间,如果我直接单击 box 没有什么问题,但是如果我单击的是child元素,那么它是怎么样执行的?

box.addEventListener("click",()=>console.log("box"));
child.addEventListener("click",()=>console.log("child"));
// 执行结果:child -> box

也就是说,默认情况是按照事件冒泡的执行顺序进行的

在这里插入图片描述

如果第三个参数写的是 true,则按照事件捕获的执行顺序进行

总结

1.onclick 事件在同一时间只能指向一个对象

2.addEventListener可以给一个事件注册多个 listener

3.addEventListener 对于任何 dom 元素都是有效的,而 onclick 仅限于 html 元素

4.addEventListener可以控制 listener 的触发阶段(捕获/冒泡)

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注脚本之家的更多内容!

相关文章

  • JavaScript关键字this的用法总结

    JavaScript关键字this的用法总结

    这篇文章介绍了JavaScript关键字this的用法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • Javascript基础_嵌入图像的简单实现

    Javascript基础_嵌入图像的简单实现

    下面小编就为大家带来一篇Javascript 基础_嵌入图像的简单实现。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-06-06
  • javascript中instanceof运算符的用法详解

    javascript中instanceof运算符的用法详解

    本文详细讲解了javascript中instanceof运算符的用法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • js闭包的用途详解

    js闭包的用途详解

    js闭包可以用在许多地方。它的最大用处有两个,一个是前面提到的可以读取函数内部的变量,另一个就是让这些变量的值始终保持在内存中。具体怎么理解呢,各位看官请仔细看好下文
    2014-11-11
  • 键盘 keycode的值 javascript时触发事件时很有用的要素

    键盘 keycode的值 javascript时触发事件时很有用的要素

    键盘keycode的值 编写javascript时触发事件时很有用的要素,大家可以收藏一下。
    2009-11-11
  • JS函数定义方式的区别介绍

    JS函数定义方式的区别介绍

    下面小编就为大家带来一篇JS函数定义方式的区别介绍。小编觉得挺不错的,现在分享给大家,给大家一个参考。一起跟随小编过来看看吧
    2016-03-03
  • javascript实现用户必须勾选协议实例讲解

    javascript实现用户必须勾选协议实例讲解

    这篇文章主要介绍了javascript实现用户必须勾选协议实例讲解,写页面的时候经常会用到,有感兴趣的同学可以学习下
    2021-03-03
  • 详解JavaScript闭包问题

    详解JavaScript闭包问题

    这篇文章主要介绍了详解JavaScript闭包问题,通过案例一步步进行讲解了该项技术问题,讲述了变量的作用域,闭包的概念和作用,需要的朋友可以参考下
    2021-06-06
  • Javascript基础教程之for循环

    Javascript基础教程之for循环

    这篇文章主要介绍了Javascript基础教程之for循环的相关资料以及示例分享,需要的朋友可以参考下
    2015-01-01
  • 快速解决Canvas.toDataURL 图片跨域的问题

    快速解决Canvas.toDataURL 图片跨域的问题

    出现Canvas.toDataURL 图片跨域问题怎么解决呢?下面小编就为大家带来一篇Canvas.toDataURL 图片跨域问题的快速解决方法。一起跟随小编过来看看吧
    2016-05-05

最新评论