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 相关文章推荐
Mozilla 表达式 __noSuchMethod__
Apr 05 Javascript
Seajs的学习笔记
Mar 04 Javascript
jquery下div 的resize事件示例代码
Mar 09 Javascript
jquery图片播放浏览插件prettyPhoto使用详解
Dec 19 Javascript
JS实现简易图片轮播效果的方法
Mar 25 Javascript
jQuery实现radio第一次点击选中第二次点击取消功能
May 15 jQuery
javascript修改浏览器title方法 JS动态修改浏览器标题
Nov 30 Javascript
原生JS实现简单的倒计时功能示例
Aug 30 Javascript
Javascript 之封装(Package)
Sep 14 Javascript
vue插槽slot的理解和使用方法
Apr 03 Javascript
vue实现todolist功能、todolist组件拆分及todolist的删除功能
Apr 11 Javascript
Vue实现导航栏菜单
Aug 19 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 smarty的预保留变量总结
2008/12/04 PHP
浅析Yii中使用RBAC的完全指南(用户角色权限控制)
2013/06/20 PHP
THINKPHP2.0到3.0有哪些改进之处
2015/01/04 PHP
php版微信小店API二次开发及使用示例
2016/11/12 PHP
PHP基于SimpleXML生成和解析xml的方法示例
2017/07/17 PHP
thinkPHP事务操作简单案例分析
2019/10/17 PHP
javascript-简单的日历实现及Date对象语法介绍(附图)
2013/05/30 Javascript
Jquery动态改变图片IMG的src地址示例
2013/06/25 Javascript
一个css与js结合的下拉菜单支持主流浏览器
2014/10/08 Javascript
node.js中的fs.fstat方法使用说明
2014/12/15 Javascript
AngularJS模块管理问题的非常规处理方法
2015/04/29 Javascript
详解Bootstrap创建表单的三种格式(一)
2016/01/04 Javascript
Treegrid的动态加载实例代码
2016/04/29 Javascript
JavaScript中有关一个数组中最大值和最小值及它们的下表的输出的解决办法
2016/07/01 Javascript
JQuery 设置checkbox值二次无效的解决方法
2016/07/22 Javascript
js运动事件函数详解
2016/10/21 Javascript
AngularJS中$http的交互问题
2017/03/29 Javascript
Vue2 轮播图slide组件实例代码
2018/05/31 Javascript
vue-router 源码之实现一个简单的 vue-router
2018/07/02 Javascript
微信小程序蓝牙连接小票打印机实例代码详解
2019/06/03 Javascript
Vue+Bootstrap收藏(点赞)功能逻辑与具体实现
2020/10/22 Javascript
Python cookbook(数据结构与算法)根据字段将记录分组操作示例
2018/03/19 Python
对Python中9种生成新对象的方法总结
2018/05/23 Python
Python自动采集微信联系人的实现示例
2020/02/28 Python
Python新手如何进行闭包时绑定变量操作
2020/05/29 Python
浅谈keras.callbacks设置模型保存策略
2020/06/18 Python
IE下实现类似CSS3 text-shadow文字阴影的几种方法
2011/05/11 HTML / CSS
德国高性价比网上药店:medpex
2017/07/09 全球购物
澳大利亚购买太阳镜和眼镜网站:Glamoureyes
2020/09/22 全球购物
师范生教师实习自我鉴定
2013/09/27 职场文书
应届生英语教师求职信
2013/11/05 职场文书
媒体宣传策划方案
2014/05/25 职场文书
基层党建工作汇报材料
2014/08/15 职场文书
企业开业庆典答谢词
2015/01/20 职场文书
大学生自荐书范文
2015/03/05 职场文书
Python开发五子棋小游戏
2022/04/28 Python