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 相关文章推荐
IE中jscript/javascript的条件编译
Sep 07 Javascript
window.onload和$(function(){})的区别介绍
Oct 30 Javascript
jQuery不使用插件及swf实现无刷新文件上传
Dec 08 Javascript
jQuery简单获取键盘事件的方法
Jan 22 Javascript
JS中JSON对象和String之间的互转及处理技巧
Apr 06 Javascript
jQuery Easyui datagrid editor为combobox时指定数据源实例
Dec 19 Javascript
vue.js之vue-cli脚手架的搭建详解
May 05 Javascript
随机生成10个不重复的0-100的数字(实例讲解)
Aug 16 Javascript
详解如何让Express支持async/await
Oct 09 Javascript
10分钟上手vue-cli 3.0 入门介绍
Apr 04 Javascript
解决vue动态下拉菜单 有数据未反应的问题
Aug 06 Javascript
ant design vue中日期选择框混合时间选择器的用法说明
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
php数组函数序列之array_splice() - 在数组任意位置插入元素
2011/11/07 PHP
从PHP的源码中深入了解stdClass类
2014/04/18 PHP
memcache一致性hash的php实现方法
2015/03/05 PHP
用PHP代码给图片加水印
2015/07/01 PHP
PHP双向链表定义与用法示例
2018/01/31 PHP
枚举JavaScript对象的函数
2006/12/22 Javascript
jquery api参考 visualjquery 中国线路 速度快
2007/11/30 Javascript
jQuery ui 1.7更新小结
2009/08/15 Javascript
js判断客户端是iOS还是Android等移动终端的方法
2013/12/11 Javascript
Event altKey,ctrlKey,shiftKey属性解析
2013/12/18 Javascript
JS函数的几种定义方式分析
2015/12/17 Javascript
JavaScript实现简单的拖动效果
2016/07/02 Javascript
微信小程序实现的涂鸦功能示例【附源码下载】
2018/01/12 Javascript
详解Vue中数组和对象更改后视图不刷新的问题
2018/09/21 Javascript
npm的lock机制解析
2019/06/20 Javascript
使用js实现一个简单的滚动条过程解析
2019/09/10 Javascript
Vue使用Proxy代理后仍无法生效的解决
2020/11/13 Javascript
vue穿梭框实现上下移动
2021/01/29 Vue.js
[03:57]DOTA2英雄梦之声_第03期_幻影刺客
2014/06/21 DOTA
[01:01:25]DOTA2上海特级锦标赛B组资格赛#2 Fnatic VS Spirit第三局
2016/02/27 DOTA
在Python中使用base64模块处理字符编码的教程
2015/04/28 Python
浅谈Python中的闭包
2015/07/08 Python
Pandas DataFrame 取一行数据会得到Series的方法
2018/11/10 Python
Django框架模板介绍
2019/01/15 Python
python中matplotlib实现随鼠标滑动自动标注代码
2020/04/23 Python
python中使用input()函数获取用户输入值方式
2020/05/03 Python
Python小白学习爬虫常用请求报头
2020/06/03 Python
Python sorted对list和dict排序
2020/06/09 Python
Python实现PS滤镜中的USM锐化效果
2020/12/04 Python
澳洲Chemist Direct药房中文网:澳洲大型线上直邮药房
2019/11/04 全球购物
资源环境与城乡规划管理专业自荐书
2014/09/26 职场文书
领导干部个人整改措施落实情况汇报
2014/10/29 职场文书
大学生村官个人总结
2015/02/15 职场文书
铁人纪念馆观后感
2015/06/16 职场文书
初一数学教学反思
2016/02/17 职场文书
大学生奖学金获奖感言(范文)
2019/08/15 职场文书