系统复习DOM事件模型
时间:2019-02-17
本文章向大家介绍系统复习DOM事件模型,主要包括系统复习DOM事件模型使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
一. DOM事件级别
dom事件级别包括dom0,dom2,dom3(dom1版本对dom事件没有任何修改)。这三种级别绑定事件的方法如下:
dom0绑定事件方法:
<p id = 'click'>click me</p>
<script>
document.getElementById('click').onclick = function(event){
alert(event.target);
}
</script>
解绑事件方法:
document.getElementById('click'_).onclick = null;
dom3和dom2绑定事件的方法一样,就是多了很多事件类型,比如keyup,input等事件类型,目前主流浏览器都已经支持这些事件类型,这些事件类型不仅可以用dom0方式绑定,也可以用dom2方式绑定。
dom2,dom3绑定事件方法及解绑事件方法:
var click = document.getElementById('inner');
click.addEventListener('click',function(){
alert('inner show');
},false);
let testFun = function () {
console.log("test111")
}
let dom = document.getElementById('test1')
/* addEventListener ie9以下不支持*/
dom.addEventListener('click',testFun,false)
dom.removeEventListener('click',testFun,false)
注意:这里有几个坑
1.用dom0方式绑定的事件方法,用dom2方式解绑方法是不行,总之就是何种级别绑定,就何种级别解绑。
2.addEventListener不支持ie9以下,需要考虑兼容写法,ie8以下是attachEven。
3.removeEventListener需要考虑两个方法用到的是同一个函数,否则remove无效。具体可自行搜索相关资料
4.dom0事件绑定方法,一次只能执行一个函数,多写几个,后面的会覆盖前面的,而dom2方式绑定的方法,可以依此执行。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>DOM 事件</title>
<meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=0">
</head>
<body>
<div id="test1">111111</div>
<script type="text/javascript">
var dom = document.getElementById('test1');
dom.onclick = function () {/*方法失效,被覆盖*/
console.log("dom0-1")
}
dom.onclick = function () {/*只执行这个*/
console.log("dom0-2")
}
/* dom2绑定事件兼容ie地低版本写法 */
var Event = {};
Event.addEvents = function(target,eventType,handle){
if(document.addEventListener){
target.addEventListener(eventType,handle,false);
}else{
target.attachEvent('on'+eventType,function(){
handle.call(target,arguments);
});
}
}
Event.removeEvents = function(target,eventType,handle){
if(document.removeEventListener){
target.removeEventListener(eventType,handle,false);
}else{
target.detachEvent('on'+eventType,function(){
handle.call(target,arguments);
});
}
}
var testFun = function () {
console.log("dom2")
}
var testFun2 = function () {
console.log("dom2-2")
}
Event.addEvents(dom,"click",testFun)/*可以执行*/
Event.addEvents(dom,"click",testFun2)/*可以执行*/
dom.onclick = null //解绑dom0方法,dom2方法依然执行
Event.removeEvents(dom,"click",testFun)//解绑dom2方法
/* 实践发现document改成window,在ie9以下无效*/
document.onkeyup = function () {//能执行
console.log("onkeyup1")
}
Event.addEvents(document,"keyup",function () {//能执行
console.log("onkeyup2")
})
</script>
</body>
</html>
- CentOs7.3 搭建 ZooKeeper-3.4.9 Cluster 集群服务
- CentOs7.3 ssh 免密登录
- 基础篇章:关于 React Native 之 Touchable 系列组件的讲解
- 基础篇章:关于 React Native 之 Navigator 组件的讲解
- CentOs7.3 搭建 ZooKeeper-3.4.9 单机服务
- Ubuntu 17.04 编译安装 Nginx 1.9.9
- CentOS7.3 安装 iptables 与详细使用
- CentOs7.3 安装 maven3.5
- 基础篇章:关于 React Native 之 Picker 组件的讲解
- Java8的十大新特性你了解多少呢?
- spring 监听器
- ELK 集群 Kibana 使用 X-Pack 权限控制,监控集群状态,实时的生成,警报,监视,cpu,内存,磁盘空间,等等一系列,报告和的可视化图形
- Dubbo详细介绍与安装使用过程
- 基础篇章:关于 React Native之 ActivityIndicator 组件的讲解
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 工匠人iOS 代码规范
- 写一个通用的幂等组件,我觉得很有必要
- PC性能监测工具,您不可或缺的好帮手~~
- 特征工程之处理时间序列数据
- Matplotlib中的“plt”和“ax”到底是什么?
- 使用深度学习模型创作动漫故事,比较LSTM和GPT2的文本生成方法
- 聊聊BitCaskLock
- LightGBM的参数详解以及如何调优
- 聊聊BitCaskKeyDir
- 使用2D卷积技术进行时间序列预测
- 在PyTorch中使用DistributedDataParallel进行多GPU分布式模型训练
- 同城双活与异地多活架构分析
- leetcode多线程之按序打印
- leetcode多线程之交替打印FooBar
- leetcode链表之反转链表