博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript事件模型
阅读量:6915 次
发布时间:2019-06-27

本文共 1494 字,大约阅读时间需要 4 分钟。

JavaScript和HTML之间的交互是通过事件来实现的。

JavaScript事件模型主要有三种:DMO0级事件处理程序(原始事件模型)、DMO2级事件处理程序、IE事件处理程序

1.DMO0级事件处理程序(原始事件模型)

特点:

①简单;

②具有跨浏览器的优势;

③this:当前元素(使用DOM0级方法指定的事件处理程序被认为是元素的方法,事件处理程序是在元素的作用域中运行);

④一个DOM对象只能注册一个类型的事件,如果注册了两个,则会发生覆盖,只执行后一个事件;

代码:

①添加事件

var btn = document.getElementById("myBtn");btn.onclick = function(){    console.log(this.id);//"myBtn"}复制代码

②删除事件

var btn = document.getElementById("myBtn");btn.onclick = null;复制代码

2.DMO2级事件处理程序

特点:

①一个DOM对象可以注册多个事件处理程序,会依次触发;

②addEventListener()、removeEventListener()均接受三个参数:要处理的事件名、作为事件处理程序的函数、一个布尔值;而布尔值若为true,则代表在捕获阶段调用事件处理程序,为false,则代表在冒泡阶段调用事件处理程序。

代码:

①添加事件

var btn = document.getElementById("myBtn");btn.addEventListener("click",function(){    console.log(this.id);//"myBtn"},false)btn.addEventListener("click",function(){    console.log('Hello!');//"myBtn"},false)复制代码

②删除事件

var btn = document.getElementById("myBtn");btn.removeEventListener("click",function(){    console.log(this.id);//没用。。。。},false)复制代码

正确的

var btn = document.getElementById("myBtn");var hander = function(){console.log(this.id);}btn.addEventListener("click",hander,false);btn.removeEventListener("click",hander,false);复制代码

3.IE事件处理程序

特点:

①一个对象可以注册多个事件处理程序,但并非依次触发,而是相反顺序被触发(与DOM方法不同);

②this:window对象(与DOM0级方法中有所区别);

代码:

①添加事件

var btn = document.getElementById("myBtn");btn.attachEvent("onclick",function(){//注意第一个参数为 onclick    console.log('Click!');});btn.attachEvent("onclick",function(){//注意第一个参数为 onclick    console.log('Hello!');});//先 "Hello!" 再"Click!"复制代码

转载地址:http://ppacl.baihongyu.com/

你可能感兴趣的文章
org.hibernate.MappingException: Could not get constructor for org.hibernate.pers
查看>>
Apache配置——域名301跳转
查看>>
KVM安装CentOS6.4系统虚拟机
查看>>
POI cell的宽度自适应
查看>>
检查ipa包是否包含手机的方法
查看>>
linux 定时器
查看>>
jquery实现input输入框实时输入触发事件
查看>>
多线程高容错爬头条街拍美图
查看>>
git 解决多个ssh提交到多个不同项目 multiple SSH Keys with different project
查看>>
HMAC
查看>>
apache报Permission denied: make_sock: could not bind to address 解决方案
查看>>
64bit 安装eclipse svn插件
查看>>
RBDDriver -1.1.0 driver is uninitialized
查看>>
道哥:我人生有两大选择,为的却都是同一件事
查看>>
Decision Trees 笔记
查看>>
Ajax初学(3)jQuery实现Ajax
查看>>
mysql数据库的优化
查看>>
开发感想 基于8051的数据采集系统(科技)
查看>>
基于S2SH框架的项目—antlr-2.7.2.jar包冲突问题
查看>>
RDIFramework.NET ━ .NET快速信息化系统开发框架 V2.8 版本━新增岗位管理-WinForm部分...
查看>>