Js 事件详解
1.事件流
1.1 事件流
描述的是在页面中接受事件的顺序
1.2 事件冒泡
由最具体的元素接收,然后逐级向上传播最不具体的元素的节点(文档)
1.3 事件捕获
最不具体的节点先接收事件,而最具体的节点应该是最后接收事件
例如:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<div id="div">
<button id="btn1">按钮</button>
</div>
</body>
</html>
事件的冒泡就是先从button再到div再到body最后到文档是逐级向上,而事件捕获就是先接受到文档然后逐级向下到button。
2.事件处理
2.1 HTML事件处理
直接添加到HTML结构中
2.2 DOM0级事件处理
把一个函数赋值给一个事件处理程序属性
2.3 DOM2级事件处理
addEventListener("事件名","事件处理函数","布尔值");
true:事件捕获
false:事件冒泡
removeEventListener();
2.4 IE事件处理程序
attachEvent
detachEvent
EventHanding.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<!--Html事件处理-->
<button id="btn1" onclick="demo1()">Html事件处理</button>
<script>
function demo1(){
alert("Html事件处理");
}
</script>
<br /> <!--DOM0级事件处理-->
<button id="btn2">DOM0级事件处理</button>
<script>
var btn2=document.getElementById("btn2");
btn2.onclick=function(){alert("DOM0级事件处理1")};//会被覆盖
btn2.onclick=function(){alert("DOM0级事件处理2")};//会被覆盖
btn2.onclick=function(){alert("DOM0级事件处理3")};
//btn2.onclick=null;
</script>
<br /> <!--DOM2级事件处理-->
<button id="btn3">DOM2级事件处理</button>
<script>
var btn3=document.getElementById("btn3");
btn3.addEventListener("click",demo31);
btn3.addEventListener("click",demo32);
btn3.addEventListener("click",demo33);
function demo31(){
alert("DOM2级事件处理31");
}
function demo32(){
alert("DOM2级事件处理32");
}
function demo33(){
alert("DOM2级事件处理33");
}
btn3.removeEventListener("click",demo31);
</script>
<br /> <!--IE事件处理-->
<button id="btn4">IE事件处理</button>
<script>
//小于等于IE8
var btn4=document.getElementById("btn4");
if(btn4.addEventListener){
btn4.addEventListener("click",demo4);
}else if(btn4.attachEvent){
btn4.attachEvent("onclick",demo4);
}else{
btn4.onclick=demo4();
}
function demo4(){
alert("hello");
}
</script> </body>
</html>
3.事件对象
3.1 事件对象
在触发DOM事件的时候都会产生一个对象
3.2 事件对象event
1>type:获取事件类型
2>target:获取事件目标
3>stopPropagation():阻止事件冒泡
4> preventDefault():阻止事件默认行为
EventObject.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<div id="div">
<button id="btn1">按钮</button>
<a id="aid" href="EventHanding.html">跳转</a>
</div> <script>
document.getElementById("btn1").addEventListener("click",showtype);
function showtype(event){
alert(event.type);//获得事件类型
alert(event.target);//获得事件目标
event.stopPropagation();//阻止事件冒泡
} document.getElementById("div").addEventListener("click",showdiv);//事件的冒泡
function showdiv(){
alert("div");
} document.getElementById("aid").addEventListener("click",showA);
function showA(event){
event.stopPropagation();
event.preventDefault();//阻止事件默认行为
}
</script>
</body>
</html>
Js 事件详解的更多相关文章
- 第三天:JS事件详解-事件流
学习来源: F:\新建文件夹 (2)\HTML5开发\HTML5开发\04.JavaScript基础\6.JavaScript事件详解 学习内容: 1)基础概念 2)举例说明: 代码如上,如果用事件 ...
- js 事件详解 冒泡
起因:正常情况下我点击s2时是先弹出我是children,再弹出我是father,但是却出现了先弹出我是father,后弹出我是children的情况,这种情况是在和安卓app交互的h5页面中出现的, ...
- JS事件详解
hello,我是沐晴,最近呢,来总结一下 JS中的常用的事件,希望我们都能一起查漏补缺. 焦点事件 焦点事件在表单中经常用到,那什么是焦点呢?比如我们文本框里面的有光标的时候,就是获得了焦点,我们就可 ...
- js中鼠标滚轮事件详解
js中鼠标滚轮事件详解 (以下内容部分内容参考了http://adomas.org/javascript-mouse-wheel/ ) 之前js 仿Photoshop鼠标滚轮控制输入框取值中已使用 ...
- js keyup、keypress和keydown事件 详解
js keyup.keypress和keydown事件 详解 js keyup.keypress和keydown事件都是有关于键盘的事件 当一个按键被pressed 或released在每一个现代浏 ...
- JavaScript事件详解-jQuery的事件实现(三)
正文 本文所涉及到的jQuery版本是3.1.1,可以在压缩包中找到event模块.该篇算是阅读笔记,jQuery代码太长.... Dean Edward的addEvent.js 相对于zepto的e ...
- JAVASCRIPT事件详解-------原生事件基础....
javaScirpt事件详解-原生事件基础(一) 事件 JavaScript与HTML之间的交互是通过事件实现的.事件,就是文档或浏览器窗口中发生的一些特定的交互瞬间,通过监听特定事件的发生,你能 ...
- 单选框radio改变事件详解(用的jquery的radio的change事件)
单选框radio改变事件详解(用的jquery的radio的change事件) 一.总结 1.用的jquery的radio的change事件:当元素的值发生改变时,会发生 change 事件,radi ...
- DOM——事件详解
事件 事件:触发-响应机制 事件三要素 事件源:触发(被)事件的元素 事件名称: click 点击事件 事件处理程序:事件触发后要执行的代码(函数形式) 事件的基本使用 var box = docu ...
随机推荐
- django之模型
ORM简介 MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库 ORM是“对象-关系-映射”的简称 ...
- upstream prematurely closed connection while reading response header from upstream
upstream prematurely closed connection while reading response header from upstream nginx配置uwsgi的时候 ...
- VS2013默认打开HTML文件没有设计视图
打开VS菜单->工具->选项->文本编辑器->文件扩展名,右侧输入html,再下拉列表选HTML(Web窗体)编辑器,点添加,确定. 第二条是彻底解决VS2013不能编辑HTM ...
- views中class定义(类的写法)CBV
from django.views import View class Home(View): def dispatch(self, request, *args, **kwargs): print( ...
- 如何让自己的exe程序开机自启动
方法一. ①鼠标右键自己的exe程序,创建快捷方式 ②win+R,打开运行对话框,输入shell:startup,如下图: 将exe文件的的快捷方式拷贝到这个目录下,然后下次重启的时候自己的应用程序就 ...
- VMware 克隆网卡无法启动
问题描述: 最近学习 hadoop,环境准备搭建在虚拟机之上,装好一台虚拟机克隆完成后,网卡无法启动. 多年前,初学 Linux 的时候,就遇到过这个问题,记录的笔记找不到了,简单记录一下. shel ...
- jsp脚本语法
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"% ...
- node.js中实现同步操作的3种实现方法
这篇文章主要介绍了node.js中实现同步操作的3种实现方法,本文用实例讲解一些需要同步操作的情况下,如何编程实现,需要的朋友可以参考下 众所周知,异步是得天独厚的特点和优势,但同时在程序中同步的需求 ...
- 未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序
实现EXCEL导入功能:web网站,excel导入用OLEDB同样会报错:未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序 报错信息: Exception caught. ...
- ubuntu下安装最新的nodejs
# apt-get update # apt-get install -y python-software-properties software-properties-common # add-ap ...