event
event(事件流)是 window对象的一个属性
在JS中事件有2种类型 一种是冒泡类型 一种是捕获类型
冒泡类型最先是在IE中出现,而捕获类型最先在标准的DOM中出现,不过最终IE得胜 从而在标准的DOM中有捕获和冒泡两种
冒泡的顺序是从下到上p>div>body>document,捕获恰恰相反

事件监听的方法
事件监听的方法分为两种,传统事件监听和非传统事件监听

传统的事件监听如下
1. <div onclick=test1()>111</div>
<script>
function test1(){
alert("11")
}
</script>
2.<div id ="div1">222</div>
<script>
document.getelementById("div1")
div1.onclick=function(){
alert("222")
}
</script>

非传统的事件监听 非传统事件也分为2种,一种是IE事件监听,一种是标准的DOM事件监听
IE事件监听
在IE事件监听中有2个函数,一个是添加事件处理函数,一个时删除事件处理函数
[obj].attachEvent('event_style',event_name);//添加事件处理函数
[obj].detachEvent('event_style',event_name);//删除事件处理函数
<body>
<div id="div1">IE事件监听</div>
<script>
window.onload=function(){//页面加载
var div1=document.getelementById("div1");//得到对象
div1.attachEvent('onclick',test1)//添加IE事件函数
}
function test1(){
//调用添加的事件函数
alert("333")//打印测试
div1.detachEvent('onclick',test1)//删除这个事件处理函数
}
</script>
</body>
标准的DOM事件监听
在标准的DOM事件监听中也有2个函数,一个是添加事件处理函数,一个是删除事件处理函数,这两个函数和IE的不行同,而且参数也不相同,有3个参数,第一个参数是事件类型,第二个参数是函数名,第三个参数有两个值,true值代表是捕获事件,false是冒泡事件,例子如下
[obj].addEventListener("event_style",event_name,event_modle)//添加事件处理函数
[obj].removeEventListener("event_style",event_name,event_modle)//删除事件处理函数

<body>
<div id="div2">444</div>
</body>
<script>
window.onload=function(){
var div2=document.getelementById("div2");
div2.addEventListener("click",test2,false)
//在添加事件函数这行代码,大家可能发现和IE有所不同,不同点2点,第一点就是事件类型和IE不同,缺少了'on'这单词,不过大家不要惊讶,这本身就是存在的,所有大家在使用的时候一定要切记,onmouseover变成mouseover等等,还有第三个参数代表,事件模型,在这里是冒泡类型,因此用false
}
</script>
function test2(){
alert("444");
div2.removeEventListener('click',test2,false)
//删除这个事件处理函数
}

到底我们何时用传统事件何时用非传统事件呢?

大家可能体会到,传统的事件只能处理一个对象,而如果我们要处理多个时呢,用非传统的话,这样大大的会提高我们代码的可阅读性,在非传统的事件处理函数中,可以存在多个事件函数

window.onload=function(){
var div1=document.getelementById("div1");
var div2=document.getelementById("div2");
div2.addEventListener("click",test2,false)
div1.addEventListener("click",test1,false)
//从上面的代码看,是不是我们的代码可阅读性提高了不少呢?
}

event(1)的更多相关文章

  1. 如何利用ETW(Event Tracing for Windows)记录日志

    ETW是Event Tracing for Windows的简称,它是Windows提供的原生的事件跟踪日志系统.由于采用内核(Kernel)层面的缓冲和日志记录机制,所以ETW提供了一种非常高效的事 ...

  2. [.NET] C# 知识回顾 - Event 事件

    C# 知识回顾 - Event 事件 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/6060297.html 序 昨天,通过<C# 知识回顾 - ...

  3. Atitit 解决Unhandled event loop exception错误的办法

    Atitit 解决Unhandled event loop exception错误的办法 查看workspace/.metadata/.log org.eclipse.swt.SWTError: No ...

  4. Java模拟Windows的Event

    场景 开发中遇到一个场景,业务操作会不定时的产生工作任务,这些工作任务需要放入到一个队列中,而另外会有一个线程一直检测这个队列,队列中有任务就从队列中取出并进行运算. 问题 业务场景倒是简单,只不过这 ...

  5. 事件EVENT与waitforsingleobject的使用

    事件event与waitforsingleobject的配合使用,能够解决很多同步问题,也可以在数据达到某个状态时启动另一个线程的执行,如报警. event的几个函数: 1.CreateEvent和O ...

  6. 火狐浏览器中event不起作用解决办法--记录(一)

    今天遇到了这个问题.IE,谷歌下都没问题,但在FF下却不起作用,很郁闷查了半天,看别人博文写了老长,结果试了要么起作用,但太麻烦,要么不起作用,说了那么多跟没说一样. 其实只要这一句代码就行:e=ar ...

  7. Event事件

    妙味课堂-Event事件 1.焦点:当一个元素有焦点的时候,那么他就可以接受用户的输入(不是所有元素都能接受焦点) 给元素设置焦点的方式: 1.点击 2.tab 3.js 2.(例子:输入框提示文字) ...

  8. Event Sourcing Pattern 事件源模式

    Use an append-only store to record the full series of events that describe actions taken on data in ...

  9. 严重: Exception sending context initialized event to listener instance of class

    问题描述:Exception sending context initialized event to listener instance of class org.springframework.w ...

  10. [转载]C#委托和事件(Delegate、Event、EventHandler、EventArgs)

    原文链接:http://blog.csdn.net/zwj7612356/article/details/8272520 14.1.委托 当要把方法作为实参传送给其他方法的形参时,形参需要使用委托.委 ...

随机推荐

  1. python socket基本连接功能实现

    socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用已实现进程在网络中通信 在应用中,要写两个程序来通信,一个是服务器端程序,一个是客户端程序 ...

  2. shell编程基础知识3

    1.Linux下scp的用法 scp就是secure copy,一个在linux下用来进行远程拷贝文件的命令.有时我们需要获得远程服务器上的某个文件,该服务器既没有配置ftp服务器,也没有做共享,无法 ...

  3. hdu 2665 Kth number (poj 2104 K-th Number) 划分树

    划分树的基本功能是,对一个给定的数组,求区间[l,r]内的第k大(小)数. 划分树的基本思想是分治,每次查询复杂度为O(log(n)),n是数组规模. 具体原理见http://baike.baidu. ...

  4. C# 枚举的声名和使用

    namespace xxxxxx { public enum EnumTextHAlign { Left = , Center = , Right = } } using xxxxxx;

  5. 前端开发工具-VsCode插件【个人开发常用】

     前端开发工具-VsCode插件[个人开发常用] Atom One Dark Theme-主题 Chinese (Simplified) Language Pack for Visual Studio ...

  6. JS在页面加载之后运行

    通用的页面加载后再运行JS有两种方式:1.在DOM加载完毕后,页面全部内容(如图片等)完全加载完毕前运行JS.   2.在页面全部内容加载完成(包括引用文件,图片等)之后再加载JS 1.在DOM加载后 ...

  7. 【Linux】shell脚本参数传递

    这里介绍参数传递的两种方式. 方式一:$0,$1,$2... 采用$0,$1,$2..等方式获取脚本命令行传入的参数 $0:脚本名称 $1....: 参数 例子: #编写一个shell $ vim t ...

  8. Sticks

    题目链接 题意:给你一组等长木棒,然后他随意砍断成n个木棒,木棒长度不一,但你知道分别是多少,要你求出原始木棒可能的最小长度. 思路:首先那个原始木棒的长度肯定是其总长度的约数,然后也肯定大于等于所有 ...

  9. PHP之namespace小结

    命名空间的使用 在声明命名空间之前唯一合法的代码是用于定义源文件编码方式的 declare 语句.所有非 PHP 代码包括空白符都不能出现在命名空间的声明之前. PHP 命名空间中的类名可以通过三种方 ...

  10. 7.zabbix常用item

    zabbix常用item zabbix常用item vfs.file.md5sum[/etc/crontab] {basic:vfs.file.md5sum[/etc/crontab].diff()} ...