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 相关文章推荐
两个DIV等高的JS的实现代码
Dec 23 Javascript
Javascript 构造函数 实例分析
Nov 26 Javascript
需要做特殊处理的DOM元素属性的访问
Nov 05 Javascript
Prototype的Class.create函数解析
Sep 22 Javascript
Javascript模块化编程(一)模块的写法最佳实践
Jan 17 Javascript
Jquery通过Ajax访问XML数据的小例子
Nov 18 Javascript
JavaScript对象数组排序函数及六个用法
Dec 23 Javascript
Javascript 引擎工作机制详解
Nov 30 Javascript
angular2倒计时组件使用详解
Jan 12 Javascript
js 判断数据类型的几种方法
Jan 13 Javascript
js实现下一页页码效果
Mar 07 Javascript
从原生JavaScript到React深入理解
Jul 23 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 ob_flush,flush在ie中缓冲无效的解决方法
2010/05/09 PHP
Yii2实现增删改查后留在当前页的方法详解
2017/01/13 PHP
ThinkPHP中create()方法自动验证实例
2017/04/26 PHP
php pdo连接数据库操作示例
2019/11/18 PHP
在模板页面的js使用办法
2010/04/01 Javascript
Ext 今日学习总结
2010/09/19 Javascript
js利用数组length属性清空和截短数组的小例子
2014/01/15 Javascript
JQuery的Ajax请求实现局部刷新的简单实例
2014/02/11 Javascript
node.js中的fs.closeSync方法使用说明
2014/12/17 Javascript
javascript实现table表格隔行变色的方法
2015/05/13 Javascript
基于javascript实现最简单的选项卡切换效果
2016/05/16 Javascript
Jquery循环截取字符串的方法(多出的字符串处理成&quot;...&quot;)
2016/11/28 Javascript
完美解决jQuery的hover事件在IE中不停闪动的问题
2017/02/10 Javascript
nodejs使用express获取get和post传值及session验证的方法
2017/11/09 NodeJs
微信小程序事件对象中e.target和e.currentTarget的区别详解
2019/05/08 Javascript
javascript删除数组元素的七个方法示例
2019/09/09 Javascript
Vue常用的全选/反选的示例代码
2020/02/19 Javascript
使用Vue实现一个树组件的示例
2020/11/06 Javascript
python 如何快速找出两个电子表中数据的差异
2017/05/26 Python
Python常见异常分类与处理方法
2017/06/04 Python
python验证码识别的示例代码
2017/09/21 Python
解决python nohup linux 后台运行输出的问题
2018/05/11 Python
python中import与from方法总结(推荐)
2019/03/21 Python
python爬取天气数据的实例详解
2020/11/20 Python
CSS3实现文字描边的2种方法(小结)
2020/02/14 HTML / CSS
KARATOV珠宝在线商店:俄罗斯珠宝品牌
2019/03/13 全球购物
乐高奥地利官方商店:LEGO Shop AT
2019/07/16 全球购物
Hobbs官方网站:英国奢华女性时尚服装
2020/02/22 全球购物
文职个人求职信范文
2013/09/23 职场文书
2014年小班元旦活动方案
2014/02/16 职场文书
中药学专业求职信
2014/05/31 职场文书
学前班教学反思
2016/02/24 职场文书
《曾国藩家书》读后感——读家书,立家风
2019/08/21 职场文书
写给医护人员的一封感谢信
2019/09/16 职场文书
MySQL数据库超时设置配置的方法实例
2021/10/15 MySQL
Python获取指定日期是"星期几"的6种方法
2022/03/13 Python