JavaScript事件详细讲解


Posted in Javascript onJune 27, 2016

事件的概念

事件:指的是文档或者浏览器窗口中发生的一些特定交互瞬间。我们可以通过侦听器(或者处理程序)来预定事件,以便事件发生的时候执行相应的代码。

一、事件流

1.事件流:描述的是在页面中接受事件的顺序

2.事件冒泡:由最具体的元素接收,然后逐级向上传播至最不具体的元素的节点(文档)

3.事件捕获:最不具体的节点先接收事件,而最具体的节点应该最后接收事件

二、事件处理

1.HTML事件处理:直接添加到HTML结构中

2.DOM0级事件处理:把一个函数赋值给一个事件处理程序属性

3.DOM2级事件处理:

addEventListener("事件名","事件处理函数",布尔值)

true:事件捕获

false:事件冒泡

removeEventListener();

4.IE事件处理程序

attachEvent

detachEvent

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<div id="div">
<button id="btn1">按钮</button>
</div>
<!--<script>
function demo(){
alert("Hello HTML事件处理");
}
</script>-->
<!--<script>
var btn1 = document.getElementById("btn1");
btn1.onclick = function(){alert("Hello DOM0级事件处理程序")};//被覆盖掉
btn1.onclick = function(){alert("Hello DOM0级事件处理程序2")};
btn1.onclick = function(){alert("Hello DOM0级事件处理程序3")};
</script>-->
<!--<script>
var btn1 = document.getElementById("btn1");
btn1.addEventListener("click",demo1);
btn1.addEventListener("click",demo2);
btn1.addEventListener("click",demo3);
function demo1(){
alert("DOM2级事件处理程序1");
}
function demo2(){
alert("DOM2级事件处理程序2");
}
function demo3(){
alert("DOM2级事件处理程序3");
}
btn1.removeEventListener("click",demo2)
</script>-->
<script>
var btn1 = document.getElementById("btn1");
if(btn1.addEventListener){
btn1.addEventListener("click",demo);
}else if(btn1.attachEvent){
btn1.attachEvent("onclick",demo)
}else{
btn1.onclick = demo();
}
function demo(){
alert("Hello");
}
</script>
</body>
</html>

三、事件对象

1、事件对象:在触发DOM事件的时候都会产生一个对象

2、事件对象event:

type:获取事件类型

target:获取事件目标

stopPropagation():阻止事件冒泡

preventDefault():阻止事件默认行为

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<div id="div">
<button id="btn1">按钮</button>
<a href="http://www.baidu.com" id="aid">百度</a>
</div>
<script>
document.getElementById("btn1").addEventListener("click",showType);
document.getElementById("div").addEventListener("click",showDiv);
document.getElementById("aid").addEventListener("click",showA);
function showType(event){
// alert(event.type);
alert(event.target);
event.stopPropagation();//阻止事件冒泡
}
function showDiv(){
alert("div")
}
function showA(event){
// event.stopPropagation();
// event.preventDefault();
}
</script>
</body>
</html>
Javascript 相关文章推荐
用javascript控制iframe滚动的代码
Apr 10 Javascript
js 事件处理函数间的Event物件是否全等
Apr 08 Javascript
JavaScript高级程序设计 XML、Ajax 学习笔记
Sep 10 Javascript
jquery中 $.expr使用实例介绍
Jun 09 Javascript
javascript实现滑动解锁功能
Dec 31 Javascript
基于JS实现的倒计时程序实例
Jul 24 Javascript
微信小程序调用PHP后台接口 解析纯html文本
Jun 13 Javascript
JS中利用swiper实现3d翻转幻灯片实例代码
Aug 25 Javascript
JavaScript遍历数组和对象的元素简单操作示例
Jul 09 Javascript
vue中的 $slot 获取插槽的节点实例
Nov 12 Javascript
微信小程序实现watch监听
Jun 04 Javascript
解决antd Form 表单校验方法无响应的问题
Oct 27 Javascript
JS原型链怎么理解
Jun 27 #Javascript
js选择器全面解析
Jun 27 #Javascript
通过javascript进行UTF-8编码的实现方法
Jun 27 #Javascript
jQuery实现每隔几条元素增加1条线的方法
Jun 27 #Javascript
jQuery实现查找链接文字替换属性的方法
Jun 27 #Javascript
全面了解javascript三元运算符
Jun 27 #Javascript
javascript运算符——逻辑运算符全面解析
Jun 27 #Javascript
You might like
Zend 输出产生XML解析错误
2009/03/03 PHP
php根据用户语言跳转相应网页
2015/11/04 PHP
PHP使用内置函数生成图片的方法详解
2016/05/09 PHP
php 策略模式原理与应用深入理解
2019/09/25 PHP
Centos7安装swoole扩展操作示例
2020/03/26 PHP
js格式化时间和js格式化时间戳示例
2014/02/10 Javascript
javascript中Number对象的toString()方法分析
2014/12/20 Javascript
json定义及jquery操作json的方法
2016/10/03 Javascript
Bootstrap导航条的使用和理解3
2016/12/14 Javascript
JS使用正则实现去掉字符串左右空格的方法
2016/12/27 Javascript
React Native中NavigatorIOS组件的简单使用详解
2018/01/27 Javascript
解决vue js IOS H5focus无法自动弹出键盘的问题
2018/08/30 Javascript
[02:24]DOTA2痛苦女王 英雄基础教程
2013/11/26 DOTA
[00:37]食人魔魔法师轮盘吉兆顺应全新至宝将拥有额外款式
2019/12/19 DOTA
[01:37]PWL S2开团时刻DAY1&2——这符有毒
2020/11/20 DOTA
详解Python中DOM方法的动态性
2015/04/11 Python
Fabric 应用案例
2016/08/28 Python
Python 如何访问外围作用域中的变量
2016/09/11 Python
python用pickle模块实现“增删改查”的简易功能
2017/06/07 Python
python实现超简单的视频对象提取功能
2018/06/04 Python
Python实现基于POS算法的区块链
2018/08/07 Python
python事件驱动event实现详解
2018/11/21 Python
python 提取tuple类型值中json格式的key值方法
2018/12/31 Python
使用Python检测文章抄袭及去重算法原理解析
2019/06/14 Python
python应用文件读取与登录注册功能
2019/09/23 Python
Python线程障碍对象Barrier原理详解
2019/12/02 Python
解决python-docx打包之后找不到default.docx的问题
2020/02/13 Python
如何配置关联Python 解释器 Anaconda的教程(图解)
2020/04/30 Python
Pygame的程序开始示例代码
2020/05/07 Python
使用python批量修改XML文件中图像的depth值
2020/07/22 Python
CSS3属性选择符介绍
2008/10/17 HTML / CSS
CSS3 @keyframes简单动画实现
2018/02/24 HTML / CSS
HTML5 CSS3打造相册效果附源码下载
2014/06/16 HTML / CSS
英国团购网站:Groupon英国
2017/11/28 全球购物
泰坦健身器材:Titan Fitness
2018/02/13 全球购物
公司踏青活动方案
2014/08/16 职场文书