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学习资源站点
Aug 29 Javascript
一个字符串反转函数可实现字符串倒序
Sep 15 Javascript
JavaScript 学习笔记之基础中的基础
Jan 13 Javascript
原生javascript实现图片无缝滚动效果
Feb 12 Javascript
jQuery图片轮播插件——前端开发必看
May 31 Javascript
BootStrap.css 在手机端滑动时右侧出现空白的原因及解决办法
Jun 07 Javascript
JavaScript实现的仿新浪微博原生态输入字数即时检查功能【兼容IE6】
Sep 26 Javascript
一个简单的node.js界面实现方法
Jun 01 Javascript
小程序如何在不同设备上自适应生成海报的实现方法
Aug 20 Javascript
node.js实现简单的压缩/解压缩功能示例
Nov 05 Javascript
JavaScript this关键字指向常用情况解析
Sep 02 Javascript
element-ui 弹窗组件封装的步骤
Jan 22 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代码
2008/09/10 PHP
PHP简洁函数(PHP简单明了函数语法)
2012/06/10 PHP
php简单判断文本编码的方法
2015/07/30 PHP
php实现给一张图片加上水印效果
2016/01/02 PHP
php微信开发之关注事件
2018/06/14 PHP
jquery 新浪网易的评论块制作
2010/07/01 Javascript
jquery 插件学习(六)
2012/08/06 Javascript
jquery实现的代替传统checkbox样式插件
2015/06/19 Javascript
JavaScript中获取Radio被选中的值
2015/11/11 Javascript
简洁实用的BootStrap jQuery手风琴插件
2016/08/31 Javascript
jQuery排序插件tableSorter使用方法
2017/02/10 Javascript
图文详解Javascript中的上下文和作用域
2017/02/15 Javascript
浅谈在vue项目中如何定义全局变量和全局函数
2017/10/24 Javascript
node.js中axios使用心得总结
2017/11/29 Javascript
React教程之封装一个Portal可复用组件的方法
2018/01/02 Javascript
Auto.js自动收取自己和好友蚂蚁森林能量脚本
2018/06/28 Javascript
Vue.js实现数据响应的方法
2018/08/13 Javascript
angular的输入和输出的使用方法
2018/09/22 Javascript
解决LayUI加上form.render()下拉框和单选以及复选框不出来的问题
2019/09/27 Javascript
Web服务器框架 Tornado简介
2014/07/16 Python
django加载本地html的方法
2018/05/27 Python
Python安装依赖(包)模块方法详解
2020/02/14 Python
MAC平台基于Python Appium环境搭建过程图解
2020/08/13 Python
Python调用Redis的示例代码
2020/11/24 Python
日本土著品牌,综合型购物网站:Cecile
2016/08/23 全球购物
草莓网美国官网:Strawberrynet USA
2016/12/11 全球购物
法国一家芭蕾舞鞋公司:Repetto
2018/11/12 全球购物
Linux内核产生并发的原因
2012/07/13 面试题
生产厂长岗位职责
2014/02/21 职场文书
跟单业务员岗位职责
2014/03/08 职场文书
百日安全活动总结
2014/05/04 职场文书
环保宣传标语
2014/06/12 职场文书
学习党的群众路线教育实践活动心得体会范文
2014/11/03 职场文书
2015共产党员公开承诺书
2015/01/22 职场文书
劳动保障个人工作总结
2015/03/04 职场文书
vue2的 router在使用过程中遇到的一些问题
2022/04/13 Vue.js