JavaScript onclick 和 click 的区别详解

目录
  • 为什么需要 addEventListener?
  • 用 addEventListener 的代码
    • 第三个参数的使用
  • 总结

也就是 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 的触发阶段(捕获/冒泡)

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

(0)

相关推荐

  • JavaScript中click和onclick本质区别与用法分析

    本文实例讲述了JavaScript中click和onclick本质区别与用法.分享给大家供大家参考,具体如下: 原生javascript的click在w3c里边的阐述是DOM button对象,也是html DOM click() 方法,可模拟在按钮上的一次鼠标单击. button 对象代表 HTML 文档中的一个按钮.button元素没有默认的行为,但是必须有一个 onclick 事件句柄以便使用. 语法:buttonObject.click() <html> <head> &l

  • javascript使用onclick事件改变选中行的颜色

    html页面的table 中一行一行的显示当然 div也行 可设置在鼠标放上去时改变其颜色 部分代码如下 复制代码 代码如下: <script type="text/javascript">var currentActiveRow; //当前活动行 //改变选中行的颜色function changeActiveRow(obj) {    if (currentActiveRow) {        currentActiveRow.style.backgroundColor

  • JS实现同一DOM元素上onClick事件与onDblClick事件并存的解决方法

    本文实例讲述了JS实现同一DOM元素上onClick事件与onDblClick事件并存的解决方法.分享给大家供大家参考,具体如下: 最近项目中遇到了在同一DOM元素上需要添加 onclick 和 ondblclick 2个事件,如果按照正常的方式添加处理,结果发现只会执行 onclick,而不会执行 ondblclick:这时我们需要对2个事件的处理函数稍作处理就可以实现2个事件并存了,代码如下: <script type="text/javascript"> var cl

  • JavaScript给按钮绑定点击事件(onclick)的方法

    本文实例讲述了JavaScript给按钮绑定点击事件(onclick)的方法.分享给大家供大家参考.具体分析如下: 我们可以通过设定按钮的onclick属性来给按钮绑定onclick事件 <!DOCTYPE html> <html> <head> <script> function displayDate() { document.getElementById("demo").innerHTML=Date(); } </script

  • JavaScript onclick事件使用方法详解

    onclick是一个事件,当事件被触发时就会执行处理,onclick是一个处理鼠标点击的事件.本篇文章就给大家分享关于JavaScript中onclick事件的用法. 我们首先来看一下onclick事件的语法 以下是如何使用onclick事件编写. 使用document.getElementById()在文档中指定id元素,并使用function(){}处理单击该元素时发生的事件. document.getElementById("button").onclick = function

  • JavaScript onclick 和 click 的区别详解

    目录 为什么需要 addEventListener? 用 addEventListener 的代码 第三个参数的使用 总结 也就是 addEventListener 和 on 的区别 为什么需要 addEventListener? 先来看一个片段: <div id ="box">测试</div> 用 on 的代码: windwo.onload = function(){ var box = document.getElementById("box&qu

  • 基于jquery的on和click的区别详解

    使用jQuery写js时,有些用on写行为函数,有些用click,弄清二者区别很重要. 以下是用于测试二者区别的HTML代码. <!DOCTYPE html> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="h

  • JavaScript中in和hasOwnProperty区别详解

    每当代码读取某个对象的某个属性时,都会执行一次搜索,目标是具有给定名字的属性.搜索首先从对象实例本身开始.如果在实例中找到了具有给定名字的属性,则返回该属性的值:如果没有找到,则继续搜索指针指向的原型对象,在原型对象中查找具有给定名字的属性.如果在原型对象中找到了这个属性,则返回该属性的值. 虽然可以通过对象实例访问保存在原型中的值,但却不能通过对象实例重写原型中的值.如果在实例中添加一个与原型中属性同名的属性,则该属性会屏蔽原型中的那个属性.添加的同名属性只会阻止我们访问原型中的那个属性,但不

  • JavaScript/TypeScript中==和===的区别详解

    在JS/TS项目里,除了能看到==操作符来判断两个变量是否相等外,我们还会看到===操作符,这两者有什么区别吗? 先上结论, 对于String, number这些基础类型,==操作符会先把两边的变量进行类型强制转换成相同的类型再比较是否相等:===操作符则不会进行类型转换,而是直接进行比较. 对于array, object这些高级类型,==和 ===是没有区别的,因为它们比较的是 “指针地址” . 对于基础类型和高级类型,== 和 ===是有区别的:==操作符会先把高级类型转换为基础类型之后,进

  • Javascript(es2016) import和require用法和区别详解

    本文介绍了Javascript(es2016) import和require用法和区别详解,分享给大家,具体如下: 写个简单js文件,假设名字为:lib.js . 假设内容如下: export const sqrt = Math.sqrt; export function square(x) { return x * x; } export function diag(x, y) { return sqrt(square(x) + square(y)); } 这样就可以在其他地方对lib中定义的

  • JavaScript里 ==与===区别详解

    1.对于string,number等基础类型,==和===是有区别的 1)不同类型间比较,==之比较"转化成同一类型后的值"看"值"是否相等,===如果类型不同,其结果就是不等 2)同类型比较,直接进行"值"比较,两者结果一样 2.对于Array,Object等高级类型,==和===是没有区别的 进行"指针地址"比较 3.基础类型与高级类型,==和===是有区别的 1)对于==,将高级转化为基础类型,进行"值&quo

  • JavaScript中object和Object的区别(详解)

    JavaScript中object和Object有什么区别,为什么用typeof检测对象,返回object,而用instanceof 必须要接Object呢 这个问题和我之前遇到的问题非常相似,我认为这里有两个问题需要解决,一个是运算符new的作用机制,一个是function关键字和Funtion内置对象之间的区别.看了一些前辈的博客和标准,这里帮提问者总结一下. 1.new new运算符的作用是创建一个对象实例.这个对象可以是用户自定义的,也可以是带构造函数的一些系统自带的对象.如果 new

  • javaScript之split与join的区别(详解)

    共同点:split与join函数通常都是对字符或字符串的操作: 两者的区别: (1)split()用于分割字符串,返回一个数组, 例如 var string="hello world?name=xiaobai"; var splitString = string.split("?"); console.log(splitString);//["hello world","name=xiaobai"] split()只有一个参数

  • javaScript中"=="和"==="的区别详解

    区别: ==, 两边值类型不同的时候,要先进行类型转换,再比较. ==,不做类型转换,类型不同的一定不等. 下面分别说明: 先说 "===",这个比较简单.下面的规则用来判断两个值是否===相等: 1.如果类型不同,就不相等 2.如果两个都是数值,并且是同一个值,那么[相等]:(!例外)的是,如果其中至少一个是NaN,那么[不相等].(判断一个值是否是NaN,只能用isNaN()来判断) 3.如果两个都是字符串,每个位置的字符都一样,那么相等:否则不相等 . 4.如果两个值都是true

  • javascript中call,apply,bind的区别详解

    在JS中,这三者都是用来改变函数的this对象的指向的,他们有什么样的区别呢. 在说区别之前还是先总结一下三者的相似之处: 1.都是用来改变函数的this对象的指向的. 2.第一个参数都是this要指向的对象. 3.都可以利用后续参数传参. 那么他们的区别在哪里的,先看一个例子. var xw = { name : "小王", gender : "男", age : 24, say : function() { alert(this.name + " ,

随机推荐