javacsript绑定事件的三种方式与各自特点

javacsript绑定事件的三种方式与各自特点

点击打开链接

javacsript绑定事件的三种方式与各自特点

feipeng8848 2017-04-11 10:12:00 浏览12 评论0

javascript 函数 浏览器 demo html type input

摘要: javacsript绑定事件的三种方式与各自特点 1. 在HTML中直接绑定 在HTML中绑定函数还有两种方式:原生函数和自定义函数(原文链接:链接) ??当JavaScript代码偏少的时候,这种方式还能勉

javacsript绑定事件的三种方式与各自特点

1. 在HTML中直接绑定

在HTML中绑定函数还有两种方式:原生函数和自定义函数(原文链接:链接)

??当JavaScript代码偏少的时候,这种方式还能勉强接受。当代码规模变大的时候,这种方式明显地带来很多不方便的东西。例如修改行为的时候还需要去修改HTML文件,这不是我们想要看到的。我们希望HTML与JavaScript能够分开维护,当修改行为的时候不要修改负责显示的东西。所以就有了下面这个绑定事件的方式。

2.在JavaScript代码中绑定

??在JavaScript代码中(即< script >标签内)绑定事件可以使JavaScript代码与HTML标签分离,文档结构清晰,便于管理和开发。

document.getElementById("demo").οnclick=function()

{

alert(this.getAttribute("type"));//this 指当前发生事件的HTML元素,这里是

标签

}

??但是这种方式有个严重的问题,就是只能为一个DOM元素的一个事件绑定唯一一个事件处理程序,重复绑定会覆盖了第一个绑定的事件处理程序,如:

button.onclick = function (evt) { alert(1); }

button.onclick = function (evt) { alert(2); }

??以上代码,单击button只会弹出2,第一个事件处理程序已经被覆盖了。而且在低版本的IE浏览器里面这种写法很容易就会导致DOM与JavaScript对象的循环引用,导致内存泄露。

3.使用addEventListener() 或 attachEvent()

button.addEventListener("click", function (evt) { ... }, true); // IE9, IE9+, Chrome, Safari, Opera

button.attatchEvent("onclick", function () { ... }); // IE9-

??DOM level 2的事件绑定机制可以让我们把HTML和JavaScript代码分开,也支持为一个DOM的同一个事件绑定多个事件处理程序,基本满足了我们对事件绑定的需求。由于IE这个奇葩不支持事件捕获机制,所以要写跨浏览器的代码,只能使用冒泡来传播事件哦!

??removeEventListener() 是解绑利用addEventListener() 绑定的事件,这里有一点需要注意:addEventListener()添加的事件只能用removeEventListener() 解绑,而且使用匿名函数的addEventListener() 绑定的事件是没办法移除的。

参考资料

三种原生JavaScript绑定事件方式对比

JavaScript绑定事件的方法[3种]

用云栖社区APP,舒服~

【云栖快讯】2017云栖大会·成都峰会 5月23日开幕!十余场技术论坛,百余名分享嘉宾,更有重磅发布。现场坐席有限,报名倒计时中!  详情请点击

javacsript绑定事件的三种方式与各自特点相关教程

java c 事件对比_javacsript绑定事件的三种方式与各自特点相关推荐

  1. React绑定this的三种方式

    转载自  React绑定this的三种方式 React可以使用React.createClass.ES6 classes.纯函数3种方式构建组件.使用React.createClass会自动绑定每个方 ...

  2. java反射之获取class对象,Java之反射机制(获取Class对象的三种方式)

    Java之反射机制(获取Class对象的三种方式) 开发工具与关键技术:MyEclipse 10,java 作者:刘东标 撰写时间:2019-06-14 如何得到各个字节码对应的实例对象? 每个类被加 ...

  3. JS基础-Java Class类以及获取Class实例的三种方式

    JS基础-Java Class类以及获取Class实例的三种方式 由于JVM为每个加载的class创建了对应的Class实例,并在实例中保存了该class的所有信息,包括类名.包名.父类.实现的接口. ...

  4. java 多线程编程(包括创建线程的三种方式、线程的生命周期、线程的调度策略、线程同步、线程通信、线程池、死锁等)

    1 多线程的基础知识 1.1 单核CPU和多核CPU 单核CPU,其实是一种假的多线程,因为在一个时间单元内,也只能执行一个线程的任务.微观上这些程序是分时的交替运行,只不过是给人的感觉是同时运行,那 ...

  5. js阻止事件的默认行为发生的三种方式

    a标签点击跳转  鼠标右键弹出菜单  滑动滚轮控制滚动条等 这些都是事件的默认行为,某些时候我们不需要这些行为,就需要阻止这些默认行为 阻止事件默认行为     用on方式添加事件           ...

  6. React ES6组件里绑定this的三种方式

    React可以使用React.createClass.ES6 classes.纯函数3种方式构建组件.使用React.createClass会自动绑定每个方法的this到当前组件,但使用ES6 cla ...

  7. java 遍历二叉树_java实现二叉树遍历的三种方式

    本文实例为大家分享了java实现二叉树遍历的具体代码,供大家参考,具体内容如下 二叉树如下: 遍历结果如下: 以下是实现代码: package binTree; import java.util.St ...

  8. java tostring格式化日期_Java格式化日期的三种方式

    1)借助DateFormat类: public String toString(Date d) { SimpleDateFormat sdf = new SimpleDateFormat(" ...

  9. java计算时间差(耗时计算)的三种方式

    目录 一.System.currentTimeMillis() 二.StopWatch 1.spring 用法 ①.简单用法 ②.说明 ③.方法 ④.详细用法 2.apache 用法 ①.简单用法 ② ...

最新文章

  1. 测试字符串读取类: TStringReader
  2. CentOS-6.4-i386硬盘安装
  3. 【ds】HDU_1166
  4. AWT架构生成与设计Token
  5. UNITY编辑器模式下static变量的坑
  6. 初学Java对某些问题的理解
  7. 如何修改Win7开机登陆界面背景图片
  8. 是时候抛弃Java 7 – JBoss EAP 6.4了!
  9. hive - 解析 json
  10. python opencv 直方图均衡_详解python OpenCV学习笔记之直方图均衡化
  11. 红黑树插入和删除的各种情况分析
  12. 【Qt串口调试助手】1.3 - 重写ComboBox下拉框的鼠标点击事件,实现点击下拉框扫描可用串口
  13. ZABBIX 4.0 安装过程记录
  14. LeetCode每日一题(22年1月27日-2月5日)
  15. 2.3 伯努利试验和直线上的随机游动
  16. 将硬盘转换成GPT分区格式
  17. 关于HTML中常用选择器
  18. ansible的变量和机密
  19. WebRTC H5实现服务器转发的视频聊天
  20. 计算机视觉算法岗 面试经验 (转载)

热门文章

  1. C# 9.0 新功能一览!
  2. 自学编程的 6 个误区 【原力计划-打卡挑战】第一周榜单揭晓
  3. 买不到口罩怎么办?Python 爬虫帮你时刻盯着自动下单!| 原力计划
  4. 何为量子计算机? | CSDN 博文精选
  5. 蚂蚁金服自研数据库打败Oracle拿下世界第一;三星手机全面退出中国;微软发布Windows 10X双屏系统 | 极客头条...
  6. 刷爆了!Java蝉联5次第一,网友:最强王者!附70k架构师Java学习路线
  7. 高通 AI、5G 争夺战!
  8. 5 天 6 亿 3000 万数据泄露,怎么做才能跑赢骗子?
  9. Java 11 将至,除了 Oracle JDK 还有这些版本!
  10. 今日头条遭罚 94 万;快手、火山小视频整改「低俗」;Wi-Fi 万能钥匙被调查 | CSDN极客头条