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的public、private和privileged模式
Dec 28 Javascript
javascript getElementsByClassName实现代码
Oct 11 Javascript
jQuery学习笔记之jQuery选择器的使用
Dec 22 Javascript
基于Css3和JQuery实现打字机效果
Aug 11 Javascript
利用CSS3在Angular中实现动画
Jan 15 Javascript
Node.js Addons翻译(C/C++扩展)
Jun 12 Javascript
JS中substring与substr的用法
Nov 16 Javascript
详解Node项目部署到云服务器上
Jul 12 Javascript
ES6正则表达式扩展笔记
Jul 25 Javascript
jQuery实现每隔一段时间自动更换样式的方法分析
May 03 jQuery
详解vue中this.$emit()的返回值是什么
Apr 07 Javascript
小程序登录之支付宝授权的实现示例
Dec 13 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
杏林同学录(三)
2006/10/09 PHP
php网站判断用户是否是手机访问的方法
2013/11/01 PHP
PHP中替换键名的简易方法示例详解
2014/01/07 PHP
phpmyadmin打开很慢的解决方法
2014/04/21 PHP
PHP中ltrim与rtrim去除左右空格及特殊字符实例
2016/01/07 PHP
微信公众平台开发教程②微信端分享功能图文详解
2019/04/10 PHP
[原创]IE view-source 无法查看看源码 JavaScript看网页源码
2009/07/19 Javascript
基于jquery实现的服务器验证控件的启用和禁用代码
2010/04/27 Javascript
在父页面得到zTree已选中的节点的方法
2015/02/12 Javascript
自定义jQuery插件方式实现强制对象重绘的方法
2015/03/23 Javascript
JQuery插件Quicksand实现超炫的动画洗牌效果
2015/05/03 Javascript
使用Web Uploader实现多文件上传
2016/06/08 Javascript
jQuery与JS加载事件用法分析
2016/09/04 Javascript
JS前端开发判断是否是手机端并跳转操作(小结)
2017/02/05 Javascript
利用jquery正则表达式在页面验证url网址输入是否正确
2017/04/04 jQuery
老生常谈js数据类型
2017/08/03 Javascript
vue左右侧联动滚动的实现代码
2018/06/06 Javascript
vue cli 3.0 使用全过程解析
2018/06/14 Javascript
Vue.js项目中管理每个页面的头部标签的两种方法
2018/06/25 Javascript
VUE项目中加载已保存的笔记实例方法
2019/09/14 Javascript
举例讲解Python中装饰器的用法
2015/04/27 Python
Python操作mongodb数据库的方法详解
2018/12/08 Python
python实现输入的数据在地图上生成热力图效果
2019/12/06 Python
OpenCV哈里斯(Harris)角点检测的实现
2020/01/15 Python
Electrolux伊莱克斯巴西商店:家用电器、小家电和配件
2018/05/23 全球购物
英国水族馆和池塘用品购物网站:Warehouse Aquatics
2019/08/29 全球购物
人力资源管理专业自荐书范文
2014/02/10 职场文书
法制宣传标语集锦
2014/06/25 职场文书
大学同学会活动方案
2014/08/20 职场文书
2014年财务科工作总结
2014/11/11 职场文书
体育个人工作总结
2015/02/09 职场文书
大学生自荐信范文
2015/03/05 职场文书
工程款申请报告
2015/05/15 职场文书
小学美术教学反思
2016/02/17 职场文书
教你解决往mysql数据库中存入汉字报错的方法
2021/05/06 MySQL
vue 自定义的组件绑定点击事件
2022/04/21 Vue.js