JavaScript事件用法浅析


Posted in Javascript onOctober 31, 2016

本文实例讲述了JavaScript事件用法。分享给大家供大家参考,具体如下:

JavaScript通过事件与HTML交互。

事件流

事件流规定了事件的触发规则和顺序。DOM2规定了事件流包括三个阶段:事件捕获 -> 目标触发除 -> 事件冒泡。DOM2规定在事件捕获阶段不应调用事件处理程序,不过各大浏览器都不鸟它。DOM2级的事件处理程序操作函数对:addEventListener和removeEventListener的第三个参数则把这种事变成了DIY,这是一种妥协,同时让初学者认为dom的管理一片混乱。

var btn = document.getElementById("btn");
btn.addEventListener("click",function(){alert(this.id);},false);
document.body.addEventListener("click",function(){alert("body");},false);

更新上述js中addEventListener和removeEventListener中的第三个参数为true,对比为false时的效果,便大约能理解事件流了。

事件

事件是用户或浏览器自身执行的某和动作。

事件处理程序的添加方式

响应事件的函数称为事件处理程序。

指定事件处理程序有以下方式:

HTML特性指定。

如果某个元素支持某个事件,那么就有一个对应的HTML特性,用此特性就可以给其添加事件处理程序 。

<button id="btn" onclick="alert('button click')">button</button>

DOM0级。 将一个函数赋值给一个元素的事件处理程序属性:这是使用js指定事件生理程序的传统方式,至今仍被使用。

var btn = document.getElementById("btn");
btn.onmouseover = function(){
 this.innerHTML="按钮";
};

DOM2级。

通过addEventListener和removeEventListener来管理元素的事件。所有DOM节点都包含这两个方法,它们都包含三个参数,以add为例:

addEventListener(事件名,事件处理函数,是否在事件捕获时执行事件处理程序)

var btn = document.getElementById("btn");
btn.addEventListener("click",function(){alert(this.id);},true);
//注意下面的remove,它完全没有用,这两个匿名函数实际上是不同的对象
btn.removeEventListener("click",function(){alert(this.id);},true);

在上面代码中,指向同一对象的引用被认为是相同的,同样的申明生成的是两个外表相同但是存储在堆上两个不同位置的不同对象。

事件对象

DOM上的事件被触发时,会生成一个事件对象event。无论指定了什么事件处理程序都会传入event对象:准确的地说,event对象是在调用执行函数的执行环境中创建的,根据作用域链的定义,可知它是如何传入的。

var btn = document.getElementById("btn");
var btnClick = function(){
 alert(event.type);
}
btn.onclick = btnClick;//点击btn按钮时,弹出msg:click

event包含丰富的成员,用来控制访问事件,下面是所有事件的共有成员。

target:触发事件的动作直接作用的目标元素。
currentTarget:等于this,事件处理程序作用于的元素。
eventPhase:调用事件处理程序时,所处的事件流中的阶段。1,2,3 三个值分别对应事件流三阶段。
type:事件类型。单击事件对应 String: "click"。

事件类型

事件类型分为以下几类:

UI事件。
焦点事件。
鼠标与滚轮事件。
键盘与文本事件。
复合事件。
变动事件。
HTML5事件。
设备事件。
触摸与手势事件。

PS:关于javascript事件的详细说明可参考本站在线工具:

javascript事件与功能说明大全:
http://tools.3water.com/table/javascript_event

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
ASP 过滤数组重复数据函数(加强版)
May 31 Javascript
5个javascript的数字格式化函数分享
Dec 07 Javascript
使用按钮控制以何种方式打开新窗口的属性介绍
Dec 17 Javascript
Javascript查询DBpedia小应用实例学习
Mar 07 Javascript
jQuery不兼容input的change事件问题解决过程
Dec 05 Javascript
javascript实现简单的省市区三级联动
May 14 Javascript
在Node.js应用中读写Redis数据库的简单方法
Jun 30 Javascript
Labelauty?jQuery单选框/复选框美化插件分享
Sep 26 Javascript
Node.js本地文件操作之文件拷贝与目录遍历的方法
Feb 16 Javascript
JS去掉字符串前后空格、阻止表单提交的实现代码
Jun 08 Javascript
JS通过位运算实现权限加解密
Aug 14 Javascript
three.js利用射线Raycaster进行碰撞检测
Mar 12 Javascript
js中通过getElementsByName访问name集合对象的方法
Oct 31 #Javascript
JavaScript递归操作实例浅析
Oct 31 #Javascript
在html中引入外部js文件,并调用带参函数的方法
Oct 31 #Javascript
Validform表单验证总结篇
Oct 31 #Javascript
Javascript数组中push方法用法分析
Oct 31 #Javascript
JavaScript中的await/async的作用和用法
Oct 31 #Javascript
使用 jQuery.ajax 上传带文件的表单遇到的问题
Oct 31 #Javascript
You might like
php自动加载autoload机制示例分享
2014/02/20 PHP
php实现httpclient类示例
2014/04/08 PHP
学习php中的正则表达式
2014/08/17 PHP
php数组索引的Key加引号和不加引号的区别
2014/08/19 PHP
php基本函数汇总
2015/07/09 PHP
PHP开发中csrf攻击的简单演示和防范
2017/05/07 PHP
分析php://output和php://stdout的区别
2018/05/06 PHP
php无限级分类实现评论及回复功能
2019/02/18 PHP
在JavaScript中实现类的方式探讨
2013/08/28 Javascript
html+js实现动态显示本地时间
2013/09/21 Javascript
JavaScript Math.ceil() 函数使用介绍
2013/12/11 Javascript
Javascript前端UI框架Kit使用指南之Kitjs简介
2014/11/28 Javascript
JavaScript数据结构与算法之栈详解
2015/03/12 Javascript
javascript实现加载xml文件的方法
2015/11/24 Javascript
JS实现瀑布流布局
2017/10/21 Javascript
浅谈Vue-cli单文件组件引入less,sass,css样式的不同方法
2018/03/13 Javascript
redux中间件之redux-thunk的具体使用
2018/04/17 Javascript
jQuery实现获取及设置CSS样式操作详解
2018/09/05 jQuery
解决vue-router路由拦截造成死循环问题
2020/08/05 Javascript
[01:20]DOTA2上海特级锦标赛现场采访:谁的ID最受青睐
2016/03/25 DOTA
Django使用Celery异步任务队列的使用
2018/03/13 Python
Python判断一个文件夹内哪些文件是图片的实例
2018/12/07 Python
Python解析多帧dicom数据详解
2020/01/13 Python
Python Django view 两种return的实现方式
2020/03/16 Python
pyspark 随机森林的实现
2020/04/24 Python
Coltorti Boutique官网:来自意大利的设计师品牌买手店
2018/11/09 全球购物
营业员演讲稿
2013/12/30 职场文书
文明青少年标兵事迹材料
2014/01/28 职场文书
工厂保安员岗位职责
2014/01/31 职场文书
优秀幼教自荐信
2014/02/03 职场文书
给学校的建议书
2014/03/12 职场文书
民主生活会对照检查材料
2014/09/22 职场文书
中学生思想品德评语
2014/12/31 职场文书
股东大会通知
2015/04/24 职场文书
2016年小学生新年寄语
2015/08/18 职场文书
Python语言内置数据类型
2022/02/24 Python