Js on及addEventListener原理用法区别解析

 更新时间:2020年07月11日 16:11:10   作者:渊源远愿  
这篇文章主要介绍了Js on及addEventListener原理用法区别解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

一.首先介绍两者的用法:

1.on的用法:以onclick为例

第一种:

obj.onclick = function(){
//do something..
}

第二种:

obj.onclick= fn;
function fn (){
//do something...
}

第三种:当函数fn有参数的情况下使用匿名函数来传参:

obj.onclick = function(){fn(param)};
function fn(param){
//do something..
}

不能够这样写:错误写法:obj.onclick= fn(param):

因为这样写函数会立即执行,不会等待点击触发,特别注意一下

2.addEventListener的用法:

形式:

addEventListener(event,funtionName,useCapture)

参数:

  • event:事件的类型如 “click”
  • funtionName:方法名
  • useCapture(可选):布尔值,指定事件是否在捕获或冒泡阶段执行。
  • true - 事件句柄在捕获阶段执行
  • false- false- 默认。事件句柄在冒泡阶段执行

写法:

第一种:

obj.addEventListener("click",function(){
//do something
}));

第二种,没参数可以直接写函数名

obj.addEventListener("click",fn,fasle));
function fn(){
//do something..
}

第三种:函数有参数时需要使用匿名函数来传递参数

obj.addEventListener("click",function(){fn(parm)},false);

二.两者的区别

1.on事件会被后面的on的事件覆盖

以onclick为例:

//obj是一个dom对象,下同//注册第一个点击事件
obj.onclick(function(){
alert("hello world");
});
//注册第二个点击事件
obj.onclick(function(){
alert("hello world too");
});

最终会只有弹框输出:

hello world too

2.addEventListener 则不会覆盖。

//注册第一个点击事件
obj.addEventListener("click",function(){
alert("hello world");
}));
//注册第二个点击事件
obj.addEventListener("click",function(){
alert("hello world too");
}));

这样会连续输出:

hello world
hello world too

三.addEventListener注意事项:

1.特别说明addEventListener不被IE9以下兼容,IE9以下用使用attachEvent()

obj.attachEvent(event,funtionName);

参数:

event:事件类型(需要写成“onclick”前面加on,这个与addEventListener不同)

funtionName:方法名(要参数是也是需要使用匿名函数来传参)

四.事件集合:

1.鼠标事件:

  • click(单击)
  • dbclick(双击)
  • mousedown(鼠标按下)
  • mouseout(鼠标移走)
  • mouseover(鼠标移入)
  • mouseup(鼠标弹起)
  • mousemove(鼠标移动)

2.键盘事件:

  • keydown(键按下)
  • keypress(按键)
  • keyup(键起来)
  • 3.HTML事件:
  • load(加载页面)
  • unload(卸载离开页面)
  • change(改变内容)
  • scroll(滚动)
  • focus(获得焦点)
  • blur(失去焦点)

五.总结:

onXXX与addEventListener都是为dom元素添加事件监听,使其在事件发生后执行相应的代码,操作。有了它们我们实现了页面与用户交互。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • js实现json数组分组合并操作示例

    js实现json数组分组合并操作示例

    这篇文章主要介绍了js实现json数组分组合并操作,涉及javascript针对json数组的遍历、判断、添加、赋值等相关操作技巧,需要的朋友可以参考下
    2019-02-02
  • js同源策略详解

    js同源策略详解

    这篇文章主要介绍了js同源策略,较为详细的分析了javascript中同源策略的概念与相关应用注意事项,需要的朋友可以参考下
    2015-05-05
  • 完美实现八种js焦点轮播图(上篇)

    完美实现八种js焦点轮播图(上篇)

    这篇文章主要介绍了完美实现八种js焦点轮播图的具体资料,基于完美运动框架move2.js而完成的八种焦点录播图,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-07-07
  • ES6 Symbol数据类型的应用实例分析

    ES6 Symbol数据类型的应用实例分析

    这篇文章主要介绍了ES6 Symbol数据类型的应用,结合实例形式分析了ES6 Symbol数据类型的功能、使用方法及相关操作注意事项,需要的朋友可以参考下
    2019-06-06
  • JavaScript中实现最高效的数组乱序方法

    JavaScript中实现最高效的数组乱序方法

    这篇文章主要介绍了JavaScript中实现最高效的数组乱序方法,数组乱序的意思是,把数组内的所有元素排列顺序打乱,需要的朋友可以参考下
    2014-10-10
  • 体验js中splice()的强大(插入、删除或替换数组的元素)

    体验js中splice()的强大(插入、删除或替换数组的元素)

    javascript splice()算是最强大的了,它可以用于插入、删除或替换数组的元素。下面来一一介绍,感兴趣的朋友
    2013-01-01
  • 浅谈Javascript中的函数、this以及原型

    浅谈Javascript中的函数、this以及原型

    下面小编就为大家带来一篇浅谈Javascript中的函数、this以及原型。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-10-10
  • JS多物体实现缓冲运动效果示例

    JS多物体实现缓冲运动效果示例

    这篇文章主要介绍了JS多物体实现缓冲运动效果的方法,涉及javascript基于时间函数进行动态运算实现页面元素动态操作的相关技巧,需要的朋友可以参考下
    2016-12-12
  • JavaScript数据类型学习笔记

    JavaScript数据类型学习笔记

    这篇文章主要针对JavaScript数据类型整理的学习笔记,分享给大家,感兴趣的小伙伴们可以参考一下
    2016-01-01
  • 如何判断出一个js对象是否一个dom对象

    如何判断出一个js对象是否一个dom对象

    如何判断出一个js对象是否一个dom对象呢?下面小编就为大家带来一篇判断出一个js对象是否一个dom对象的方法。希望对大家有所帮助。一起跟随小编过来看看吧
    2016-11-11

最新评论