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 相关文章推荐
ECMAScript 基础知识
Jun 29 Javascript
深入理解JavaScript中的对象
Jun 04 Javascript
js实现类似MSN提示的页面效果代码分享
Aug 24 Javascript
JAVA中截取字符串substring用法详解
Apr 14 Javascript
vue 权限认证token的实现方法
Jul 17 Javascript
vue的style绑定background-image的方式和其他变量数据的区别详解
Sep 03 Javascript
vue中v-for循环给标签属性赋值的方法
Oct 18 Javascript
微信小程序实现登录遮罩效果
Nov 01 Javascript
mocha的时序规则讲解
Feb 16 Javascript
vue语法自动转typescript(解放双手)
Sep 18 Javascript
vue递归获取父元素的元素实例
Aug 07 Javascript
浅谈vue使用axios的回调函数中this不指向vue实例,为undefined
Sep 21 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数组应该有多大的分析
2009/07/30 PHP
php的数组与字符串的转换函数整理汇总
2013/07/18 PHP
discuz免激活同步登入代码修改方法(discuz同步登录)
2013/12/24 PHP
javascript制作的网页侧边弹出框思路及实现代码
2014/05/21 Javascript
jQuery中each()方法用法实例
2014/12/27 Javascript
JQuery跳出each循环的方法
2015/04/16 Javascript
JavaScript中exec函数用法实例分析
2015/06/08 Javascript
angularJS 指令封装回到顶部示例详解
2017/01/22 Javascript
jquery实现异步加载图片(懒加载图片一种方式)
2017/04/24 jQuery
对象不支持indexOf属性或方法的解决方法(必看)
2017/05/28 Javascript
JS实现求数组起始项到终止项之和的方法【基于数组扩展函数】
2017/06/13 Javascript
JavaScript基于面向对象实现的猜拳游戏
2018/01/03 Javascript
js的对象与函数详解
2019/01/21 Javascript
js实现select下拉框选择
2020/01/11 Javascript
关于vue属性使用和不使用冒号的区别说明
2020/10/22 Javascript
[01:02:25]2014 DOTA2华西杯精英邀请赛 5 24 iG VS DK
2014/05/26 DOTA
Python中的引用和拷贝浅析
2014/11/22 Python
Python代码调试的几种方法总结
2015/04/15 Python
解决Python中字符串和数字拼接报错的方法
2016/10/23 Python
Python编程之event对象的用法实例分析
2017/03/23 Python
Python抓取框架Scrapy爬虫入门:页面提取
2017/12/01 Python
Python处理时间日期坐标轴过程详解
2019/06/25 Python
PyQt5基本控件使用之消息弹出、用户输入、文件对话框的使用方法
2019/08/06 Python
Jupyter notebook 启动闪退问题的解决
2020/04/13 Python
python用Tkinter做自己的中文代码编辑器
2020/09/07 Python
HTML5拖放API实现拖放排序的实例代码
2017/05/11 HTML / CSS
巴西电子、家电、智能手机购物网站:Girafa
2019/06/04 全球购物
《爱如茉莉》教后反思
2014/04/12 职场文书
幼儿园家长评语大全
2014/04/16 职场文书
道德演讲稿
2014/05/21 职场文书
我们的节日春节活动方案
2014/08/22 职场文书
司机工作自我鉴定
2014/09/19 职场文书
离婚协议书范文2014
2014/10/16 职场文书
2015法院个人工作总结范文
2015/05/25 职场文书
简爱电影观后感
2015/06/10 职场文书
100句人生哲理语录集锦:强者征服今天,懒汉坐等明天
2019/10/18 职场文书