web前端学习(四)JavaScript学习笔记部分(5)-- 事件流详解
1、JS事件详解-事件流
1.1、事件流
1.事件流:
描述的是在页面中接受事件的顺序
2.事件冒泡:
由最具体的元素接收,然后逐级上传播至最不具体的节点(文档)
3.事件捕获:
最不具体的节点先接收事件,而最具体的节点应该是最后接收事件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div>
<button id="btn"></button>
<!--冒泡的方式
先点击btn第一接收的应该是按钮,
然后应该是包含他的div,再就是html标签,
最后应该就是html文档了 事件的捕获:
最先接收的是文档型接收,然后就是div接收,
最后才是最具体的button接收-->
</div>
</body>
</html>
2、JS事件详解-事件处理
1.HTML事件处理:
直接添加到HTML结构中
2.DOM0级事件处理
把一个函数赋值给一个事件处理程序属性
注:只能添加一个事件处理程序;
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div id="div">
<button id="btn">按钮</button>
</div>
<script>
var btn = document.getElementById("btn");
btn.onclick = function(){alert("DOM0级事件处理111");}
//第一个事件被覆盖。
// DOM0级事件处理程序只会处理最后一个事件处理程序
btn.onclick = function(){alert("DOM0级事件处理222");} // btn.onclick = null;/*将DOM0级事件处理程序清除*/
</script>
</body>
</html>
3.DOM2级事件处理
addEventListener("事件名","事件处理函数","布尔值");
true:事件捕获
false:事件冒泡
removeEventListener();
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div id="div">
<button id="btn">按钮</button>
</div>
<script>
var btn = document.getElementById("btn");
btn.addEventListener("click",demo1);
btn.addEventListener("click",demo2);
btn.addEventListener("click",demo3); function demo1(){
alert("DOM2级事件处理程序1");
}
function demo2(){
alert("DOM2级事件处理程序2");
}
function demo3(){
alert("DOM2级事件处理程序3");
}
btn.removeEventListener("click",demo2);
</script>
</body>
</html>
DOM2级事件处理程序处理方便。
4.IE事件处理程序
attachEvent
detachEvent
这两个是比IE8低的版本使用的语句。
使用如下代码可解决问题:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div>
<button id="btn">按钮</button>
</div>
<script>
var btn = document.getElementById("btn"); if(btn.addEventListener){ // alert("1");
// btn.onclick = demo();
btn.addEventListener("click",demo);
}else if(btn.attachEvent){
alert("2");
btn.attachEvent("onclick",demo);
}else{
alert("3");
btn.onclick = demo;
}
function demo(){
alert("111");
} </script>
</body>
</html>
3、JS事件详解-事件对象
3.1、事件对象:
在触发DOM事件的时候都会产生一个对象
3.2、事件对象event
1.type:获取事件类型
2.target:获取事件目标
3.stopPropagation:阻止事件冒泡
4.preventDefault:阻止事件默认行为
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div id="div">
<button id="btn">点击按钮</button>
<a id="aid" href="http://www.baidu.com">百度一下</a>
</div>
<script>
document.getElementById("btn").addEventListener("click",showType);
document.getElementById("div").addEventListener("click",showDiv);
document.getElementById("aid").addEventListener("click",showA);
function showType(){
alert(event.type);//顾名思义
alert(event.target);//顾名思义
event.stopPropagation();//阻止事件冒泡,否则还会触发点击div的事件
}
function showDiv(){
alert("div");
}
function showA(){
event.stopPropagation();
event.preventDefault();//阻止事件的默认行为
} </script>
</body>
</html>
web前端学习(四)JavaScript学习笔记部分(5)-- 事件流详解的更多相关文章
- ArcGIS API for javascript开发笔记(六)——REST详解及如何使用REST API调用GP服务
感谢一路走来默默支持和陪伴的你~~~ -------------------欢迎来访,拒绝转载-------------------- 一.Rest API基础 ArcGIS 平台提供了丰富的REST ...
- Linux 学习笔记之 --- epoll 事件模型详解
epoll 主要采用对已就绪的 fd 进行轮询操作 一.epoll 触发方式 epoll支持 ET 和 LT 两种触发方式 ET(边缘触发):Nginx 就是采用 ET 触发方式,只支持 no-b ...
- Web前端与移动开发学习路线图
文章转载自「开发者圆桌」一个关于开发者入门.进阶.踩坑的微信公众号 这里整理的Web前端与移动开发学习路线图包含初中级两个部分,你可以通过百度云盘下载观看对应的视频 链接: http://pan.ba ...
- 想做web前端project师应该学习些什么?
偶然间看到这篇文章.感觉博主写的挺不错的,假设你想做web前端project师的话,建议您阅读下面这篇文章,事实上web前端project师所做的工作事实上就是站点设计,有些小公司的美工事实上就是做w ...
- 进击的Python【第十四章】:Web前端基础之Javascript
进击的Python[第十四章]:Web前端基础之Javascript 一.javascript是什么 JavaScript 是一种轻量级的编程语言. JavaScript 是可插入 HTML 页面的编 ...
- 最全的WEB前端开发程序员学习清单
史上最全的WEB前端开发程序员学习清单! 今天为什么要给大家分享这篇文章呢,我发现最近来学前端的特别多,群里面整天都有人问:前端好找工作吗?前端要怎么学啊?前端工资怎么样?前端XX,前端XXX,虽然我 ...
- 腾讯Web前端开发框架JX(Javascript eXtension tools)
转自:Web前端开发-Web前端工程师 » 腾讯Web前端开发框架JX(Javascript eXtension tools) JX – Javascript eXtension tools 一个类似 ...
- IP地址和子网划分学习笔记之《IP地址详解》
2018-05-03 18:47:37 在学习IP地址和子网划分前,必须对进制计数有一定了解,尤其是二进制和十进制之间的相互转换,对于我们掌握IP地址和子网的划分非常有帮助,可参看如下目录详文. ...
- Quartz学习——SSMM(Spring+SpringMVC+Mybatis+Mysql)和Quartz集成详解(转)
通过前面的学习,你可能大致了解了Quartz,本篇博文为你打开学习SSMM+Quartz的旅程!欢迎上车,开始美好的旅程! 本篇是在SSM框架基础上进行的. 参考文章: 1.Quartz学习——Qua ...
随机推荐
- mybatis第二篇—参数绑定
不管我们在做数据库作业或者任务还是当时的仅靠jdbc来写一个管理系统的时候,sql语句需要一些参数,从而来实现模糊查询,精确查询,插入数据,更新数据和删除数据.这些参数,在mybatis里面,又该如何 ...
- (Eclipse) 安装Subversion1.82(SVN)插件
简介 :SVN是团队开发的代码管理工具,它使我们得以进行多人在同一平台之下的团队开发. 解决问题:Eclipse下的的SVN插件安装. 学到 :Eclipse下的的SVN插件安装. 资源地 ...
- C/C++编译的程序内存组成:
#include int main(){int a[1000000];//局部变量return 0;}编译运行后发现溢出错误.#include int a[1000000];//全局变量int mai ...
- 【核心核心】4.Spring【IOC】注解方式
1.导入jar包 2.创建对应的类 public interface HelloService { public void sayHello(); } /** * @Component(value=& ...
- utils01_git的使用
1.git和的安装 下载git https://www.git-scm.com/download/ 完全下一步安装git和TortoiseGit和TortoiseGit的汉化包 2.右击选中小乌龟点击 ...
- Beyond Compare注册码
注册码: --- BEGIN LICENSE KEY --- H1bJTd2SauPv5Garuaq0Ig43uqq5NJOEw94wxdZTpU-pFB9GmyPk677gJ vC1Ro6sbAvK ...
- c++容器中map的应用
原文链接:https://www.cnblogs.com/fnlingnzb-learner/p/5833051.html Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关 ...
- 微信小程序开发(一)
引自http://www.cnblogs.com/mdnx/p/6004653.html 第一步 (下载开发工具) https://mp.weixin.qq.com/debug/wxadoc/dev ...
- Java程序员面试题收集(3)
面试中被问到过的题目: 1.<%@ include=""/>和<jsp:include page="" flush="true&qu ...
- 搭建maven聚合工程包含springboot模块
一.新建一个maven项目 二.删除src 打开pom.xml 补充标签 <packaging>pom</packaging> 新建 <module>brr- ...