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 相关文章推荐
JS辨别访问浏览器判断是android还是ios系统
Aug 19 Javascript
javascript异步处理工作机制详解
Apr 13 Javascript
浅析jQuery Ajax请求参数和返回数据的处理
Feb 24 Javascript
jquery简单插件制作(fn.extend)完整实例
May 24 Javascript
微信小程序 for 循环详解
Oct 09 Javascript
值得分享和收藏的xmlplus组件学习教程
May 05 Javascript
JS实现多级菜单中当前菜单不随页面跳转样式而发生变化
May 30 Javascript
JS库之Three.js 简易入门教程(详解之一)
Sep 13 Javascript
jquery的 filter()方法使用教程
Mar 22 jQuery
不使用JavaScript实现菜单的打开和关闭效果demo
May 01 Javascript
vue实现城市列表选择功能
Jul 16 Javascript
JS+HTML实现的圆形可点击区域示例【3种方法】
Aug 01 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来处理多个提交任务
2006/10/09 PHP
php 过滤器实现代码
2010/08/09 PHP
php中利用explode函数分割字符串到数组
2014/02/08 PHP
php操作redis中的hash和zset类型数据的方法和代码例子
2014/07/05 PHP
几道坑人的PHP面试题 试试看看你会不会也中招
2014/08/19 PHP
PHP面向对象类型约束用法分析
2019/06/12 PHP
Laravel实现批量更新多条数据
2020/04/06 PHP
一个小型js框架myJSFrame附API使用帮助
2008/06/28 Javascript
DLL+ ActiveX控件+WEB页面调用例子
2010/08/07 Javascript
浅谈 jQuery 事件源码定位问题
2014/06/18 Javascript
jquery实现动态改变div宽度和高度
2015/05/08 Javascript
实现placeholder效果的方案汇总
2015/06/11 Javascript
JavaScript获取当前运行脚本文件所在目录的方法
2016/02/03 Javascript
JavaScript代码实现图片循环滚动效果
2020/03/19 Javascript
浅谈React 属性和状态的一些总结
2016/11/21 Javascript
vue实现表格数据的增删改查
2017/07/10 Javascript
layui 富文本图片上传接口与普通按钮 文件上传接口的例子
2019/09/23 Javascript
[01:29]Ti4循环赛第三日精彩回顾
2014/07/13 DOTA
[02:32]DOTA2亚洲邀请赛 C9战队出场宣传片
2015/02/07 DOTA
简单介绍Python中的try和finally和with方法
2015/05/05 Python
pyqt5自定义信号实例解析
2018/01/31 Python
python使用itchat实现手机控制电脑
2018/02/22 Python
pyttsx3实现中文文字转语音的方法
2018/12/24 Python
python使用matplotlib绘制雷达图
2019/10/18 Python
python时间time模块处理大全
2020/10/25 Python
Python 调用 ES、Solr、Phoenix的示例代码
2020/11/23 Python
VICHY薇姿英国官网:全球专业敏感肌护肤领先品牌
2017/07/04 全球购物
党校学习自我鉴定
2014/02/24 职场文书
陈欧的广告词
2014/03/18 职场文书
环保建议书300字
2014/05/14 职场文书
大学生入党推荐书范文
2014/05/17 职场文书
英语求职信范文
2014/05/23 职场文书
团拜会策划方案
2014/06/07 职场文书
植物生产学专业求职信
2014/08/08 职场文书
法律意见书范文
2015/06/04 职场文书
Oracle数据库中通用的函数实例详解
2022/03/25 Oracle