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 相关文章推荐
Mootools 1.2教程 事件处理
Sep 15 Javascript
关于全局变量和局部变量的那些事
Jan 11 Javascript
jQuery scroll事件实现监控滚动条分页示例
Apr 04 Javascript
jQuery判断浏览器并动态调整select宽度的方法
Mar 02 Javascript
Vue.js基础学习之class与样式绑定
Mar 20 Javascript
微信小程序request出现400的问题解决办法
May 23 Javascript
express框架下使用session的方法
Jul 31 Javascript
Layui数据表格之单元格编辑方式
Oct 26 Javascript
Vue中图片Src使用变量的方法
Oct 30 Javascript
解决vuex改变了state的值,但是页面没有更新的问题
Nov 12 Javascript
微信小程序实现简单购物车功能
Dec 30 Javascript
微信小程序抽奖组件的使用步骤
Jan 11 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横向重复区域显示二法
2008/09/25 PHP
php操作memcache缓存方法分享
2015/06/03 PHP
PHP中的密码加密的解决方案总结
2016/10/26 PHP
mac os快速切换多个PHP版本的方法
2017/03/07 PHP
PHP实现基于状态的责任链审批模式详解
2019/05/31 PHP
博客侧边栏模块跟随滚动条滑动固定效果的实现方法(js+jquery等)
2013/03/24 Javascript
JQuery操作iframe父页面与子页面的元素与方法(实例讲解)
2013/11/20 Javascript
JQuery做的一个简单的点灯游戏分享
2014/07/16 Javascript
jQuery 1.9.1源码分析系列(十三)之位置大小操作
2015/12/02 Javascript
NodeJS远程代码执行
2016/08/28 NodeJs
JavaScript实现清空(重置)文件类型INPUT元素值的方法
2016/11/17 Javascript
详解vue+css3做交互特效的方法
2017/11/20 Javascript
swiper4实现移动端导航栏tab滑动切换
2020/10/16 Javascript
vuex刷新后数据丢失的解决方法
2020/10/18 Javascript
Python的Django框架中消息通知的计数器实现教程
2016/06/13 Python
python实现播放音频和录音功能示例代码
2018/12/30 Python
Python面向对象程序设计构造函数和析构函数用法分析
2019/04/12 Python
python 字段拆分详解
2019/12/17 Python
在win64上使用bypy进行百度网盘文件上传功能
2020/01/02 Python
在django中使用post方法时,需要增加csrftoken的例子
2020/03/13 Python
python+adb命令实现自动刷视频脚本案例
2020/04/23 Python
Django中文件上传和文件访问微项目的方法
2020/04/27 Python
解决Django响应JsonResponse返回json格式数据报错问题
2020/08/09 Python
详解python使用金山词霸的翻译功能(调试工具断点的使用)
2021/01/07 Python
Expedia爱尔兰:酒店、机票、租车及廉价假期
2017/01/02 全球购物
菲律宾领先的在线时尚商店:Zalora菲律宾
2018/02/08 全球购物
英国家庭家具、照明和花园家具购物网站:Furniture123
2018/12/31 全球购物
结构工程研究生求职信
2013/10/13 职场文书
2015年幼儿园元旦游艺活动策划书
2014/12/09 职场文书
2015年出纳个人工作总结
2015/04/02 职场文书
围城读书笔记
2015/06/26 职场文书
小学语文国培研修日志
2015/11/13 职场文书
2016小学优秀教师先进事迹材料
2016/02/26 职场文书
导游词之藏龙百瀑景区
2019/12/30 职场文书
css3新特性的应用示例分析
2022/03/16 HTML / CSS
Golang获取List列表元素的四种方式
2022/04/20 Golang