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系列之数值计算
Jun 07 Javascript
JavaScript判断变量是否为空的自定义函数分享
Jan 31 Javascript
javascript解析xml实现省市县三级联动的方法
Jul 25 Javascript
iscroll.js的上拉下拉刷新时无法回弹的解决方法
Feb 18 Javascript
js实现前端图片上传即时预览功能
Aug 02 Javascript
vue.js使用3DES加密的方法示例
May 18 Javascript
vue-cli 默认路由再子路由选中下的选中状态问题及解决代码
Sep 06 Javascript
在vue中使用express-mock搭建mock服务的方法
Nov 07 Javascript
详解处理Vue单页面应用SEO的另一种思路
Nov 09 Javascript
解决mui框架中switch开关通过js控制开或者关状态时小圆点不动的问题
Sep 03 Javascript
深入理解基于vue-cli的webpack打包优化实践及探索
Oct 14 Javascript
vue的$http的get请求要加上params操作
Nov 12 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遍历文件夹和文件列表示例分享
2014/03/11 PHP
PHP 绘制网站登录首页图片验证码
2016/04/12 PHP
PHP面向对象程序设计类的定义与用法简单示例
2016/12/27 PHP
PHP基于GD2函数库实现验证码功能示例
2019/01/27 PHP
自动生成文章摘要的代码[JavaScript 版本]
2007/03/20 Javascript
如何确保JavaScript的执行顺序 之jQuery.html并非万能钥匙
2011/03/03 Javascript
JQuery 控制内容长度超出规定长度显示省略号
2014/05/23 Javascript
Ubuntu中搭建Nodejs开发环境过程分享
2014/06/01 NodeJs
AngularJS入门知识之MVW类框架的编程思想探讨
2014/12/08 Javascript
移动端点击图片放大特效PhotoSwipe.js插件实现
2016/08/25 Javascript
Vue.js实现一个自定义分页组件vue-paginaiton
2016/09/05 Javascript
js获取当前页的URL与window.location.href简单方法
2017/02/13 Javascript
javascript实现多张图片左右无缝滚动效果
2017/03/22 Javascript
浅谈struts1 &amp; jquery form 文件异步上传
2017/05/25 jQuery
JavaScript实现提交模式窗口后刷新父窗口数据的方法
2017/06/16 Javascript
vue 获取视频时长的实例代码
2019/08/20 Javascript
javaScript中indexOf用法技巧
2019/11/26 Javascript
js实现拖拽与碰撞检测
2020/09/18 Javascript
在Python的Bottle框架中使用微信API的示例
2015/04/23 Python
python3实现跳一跳点击跳跃
2018/01/08 Python
python 读入多行数据的实例
2018/04/19 Python
Python中循环引用(import)失败的解决方法
2018/04/22 Python
python 平衡二叉树实现代码示例
2018/07/07 Python
Django objects的查询结果转化为json的三种方式的方法
2018/11/07 Python
windows下搭建python scrapy爬虫框架步骤
2018/12/23 Python
Python3爬虫全国地址信息
2019/01/05 Python
pycharm 激活码及使用方式的详细教程
2020/05/12 Python
Python中内建模块collections如何使用
2020/05/27 Python
python使用hdfs3模块对hdfs进行操作详解
2020/06/06 Python
加拿大高尔夫超市:Golf Town
2018/01/12 全球购物
购房个人委托书范本
2014/10/11 职场文书
房屋转让协议书(标准范本)
2016/03/21 职场文书
解决Python中的modf()函数取小数部分不准确问题
2021/05/28 Python
MySQL的安装与配置详细教程
2021/06/26 MySQL
动画《平凡职业成就世界最强》宣布制作OVA
2022/04/01 日漫