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


Posted in Javascript onJuly 11, 2020

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

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元素添加事件监听,使其在事件发生后执行相应的代码,操作。有了它们我们实现了页面与用户交互。

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

Javascript 相关文章推荐
jquery 图片截取工具jquery.imagecropper.js
Apr 09 Javascript
jquery.jstree 增加节点的双击事件代码
Jul 27 Javascript
javascript高级程序设计第二版第十二章事件要点总结(常用的跨浏览器检测方法)
Aug 22 Javascript
用canvas 实现个图片三角化(LOW POLY)效果
Feb 18 Javascript
AngularJS基础 ng-paste 指令简单示例
Aug 02 Javascript
JavaScript & jQuery完美判断图片是否加载完毕
Jan 08 Javascript
layer弹出层中H5播放器全屏出错的解决方法
Feb 21 Javascript
在小程序/mpvue中使用flyio发起网络请求的方法
Sep 13 Javascript
vue实现可视化可拖放的自定义表单的示例代码
Mar 20 Javascript
Vue组件间通信方法总结(父子组件、兄弟组件及祖先后代组件间)
Apr 17 Javascript
nest.js 使用express需要提供多个静态目录的操作方法
Oct 24 Javascript
Vue按时间段查询数据组件使用详解
Aug 21 Javascript
JS call()及apply()方法使用实例汇总
Jul 11 #Javascript
JS如何定义用字符串拼接的变量
Jul 11 #Javascript
基于原生js实现判断元素是否有指定class名
Jul 11 #Javascript
详解在IDEA中将Echarts引入web两种方式(使用js文件和maven的依赖导入)
Jul 11 #Javascript
详解element-ui 表单校验 Rules 配置 常用黑科技
Jul 11 #Javascript
uniapp,微信小程序中使用 MQTT的问题
Jul 11 #Javascript
VSCode 配置uni-app的方法
Jul 11 #Javascript
You might like
php读取csv数据保存到数组的方法
2015/01/03 PHP
Laravel 5框架学习之路由、控制器和视图简介
2015/04/07 PHP
Yii2隐藏frontend/web和backend/web的方法
2015/12/12 PHP
Zend Framework教程之Zend_Db_Table表关联实例详解
2016/03/23 PHP
php短信接口代码
2016/05/13 PHP
php取出数组单个值的方法
2018/03/12 PHP
Javascript 面向对象之重载
2010/05/04 Javascript
火狐4、谷歌12不支持Jquery Validator的解决方法分享
2011/06/20 Javascript
javascript学习笔记(一) 在html中使用javascript
2012/06/18 Javascript
js switch case default 的用法示例介绍
2013/10/23 Javascript
javascript实现简单的鼠标拖动效果实例
2015/04/10 Javascript
js console.log打印对像与数组用法详解
2016/01/21 Javascript
JS实现图片剪裁并预览效果
2016/08/12 Javascript
JS实现按钮颜色切换效果
2020/09/05 Javascript
详解VUE中常用的几种import(模块、文件)引入方式
2018/07/03 Javascript
vue动态子组件的两种实现方式
2019/09/01 Javascript
[44:10]2018DOTA2亚洲邀请赛 4.5 淘汰赛 EG vs VP 第一场
2018/04/06 DOTA
[49:20]VG vs TNC Supermajor小组赛B组败者组决赛 BO3 第二场 6.2
2018/06/03 DOTA
python小技巧之批量抓取美女图片
2014/06/06 Python
Python用模块pytz来转换时区
2016/08/19 Python
Python产生Gnuplot绘图数据的方法
2018/11/09 Python
对python生成业务报表的实例详解
2019/02/03 Python
Django后端接收嵌套Json数据及解析详解
2019/07/17 Python
使用Python爬取弹出窗口信息的实例
2020/03/14 Python
Python HTMLTestRunner如何下载生成报告
2020/09/04 Python
python 解决Windows平台上路径有空格的问题
2020/11/10 Python
详解HTML5 录音的踩坑之旅
2017/12/26 HTML / CSS
Cotton On香港网站:澳洲时装连锁品牌
2018/11/01 全球购物
中医药大学毕业生自荐信
2013/11/08 职场文书
大学校庆策划书
2014/01/31 职场文书
竞选班长自荐书范文
2014/03/09 职场文书
教师党员一句话承诺
2014/03/28 职场文书
消防宣传标语大全
2015/08/03 职场文书
干部考核工作总结
2015/08/12 职场文书
爱心捐款倡议书:点燃希望,传递温暖
2019/11/04 职场文书
数据分析数据库ClickHouse在大数据领域应用实践
2022/04/03 MySQL