JavaScript事件一共有三种监听方法分别如下:

1、事件监听一夹杂在html标签内

 <div id="box" onClick="alert('HELLO WORLD')">
<div id="box2" onClick="notice();"></div>
<div id="box3" onClick="service('HELLO WORLD'');"></div>
</div> function notice(){ alert(HELLO WORLD'");}
function service(str){ alert(str);}

说明:以上把事件监听功能onClick写到div中的形式是最古老原始形式,所有主流浏览器都支持。

类似行内CSS样式一样,是有效的(注意大小敏感),但是缺点和写到行内的CSS样式一样。

优点:

1)兼容性好,基本上所有浏览器都支持该种方式

缺点如下:

 1)复用性不好。

 2)JS与HTML夹杂到一块,代码混乱,发生错误难以检测和排除,不利于分工合作。

 3)如果发生修改需要同时修改HTML和JS,改动相对困难。

为了解决以上问题把事件监听形式改进如下,以下方式也是目前主流的使用方式之一。

2、事件监听方法二 on+"事件"

 <div id="box"></div>

 var box = document.getElementById("box");

 box.onclick = function(){
alert("HELLOW WORLD");
};

说明:通过以上形式可以把事件与HTML完全分离,是最常用的形式之一。

以上对于一般项目已经足够用。但如果想单击一次执行多个函数时,这种绑定方式就无法完成了:

 box.onclick = function(){
fnA();
fnB();
};
function fnA(){
alert("我会被执行");
}
function fnB(){
alert("我也会被执行");
}

说明:这种情况下 alert("HELLOW WORLD") 就不会被执行了,也就是说后面的函数覆盖了之前声明的函数。

优点:

1)兼容性好,基本支持所有浏览器

2)做到了文档与JS的分离,方便后期的代码管理

缺点:

1)同一个事件,在执行多个函数时会发生覆盖

3、事件监听方法三 element.addEventListener(事件名,函数,冒泡/捕获)

<div id="box">
<div id="box1"></div>
<div id="box2"></div>
</div> var box = document.getElementById("box");
box.addEventListener("click",fnA,false);
box.addEventListener("click",fnB,false); function fnA(){
alert("HELLO WORLD!");
}
function fnB(){
alert("HI CHINA!");
}

上面两个函数fA(),fB()都会执行,不会发生覆盖现象。

使用介绍:

addEventListene是DOM2的标准语法,新版本主流浏览器基本都支持。但是老版本IE浏览器不支持;

这种绑定方法有三个参数:

第一个是事件类型,不需要on前缀,但事件名需加  " " ;
第二个参数是发生这个事件的时候要调用的函数;

第三个是布尔值的true或false.(默认值是false)
false代码是以冒泡型事件流进行处理,一般都选用false.
true意味着代码以捕获型事件流进行处理,不是必须不推荐使用。

优点:

1)做到JS与HTML文档分离,便于代码维护;

2)不会发生像on+"事件"的函数覆盖现象;

3)提供监听的事件以冒泡或者捕获的可选方式执行

缺点:

1)兼容性还不完善,老板IE浏览器可能不兼容;

2)方法名较长,记忆稍有难度

:使用element.removeEventListener(type,listener,useCapture);方法可以移除已经添加的实际。
        使用方法:box.removeEventListener("click",fnB,false);

4、IE浏览器的特性型:

老版本IE浏览器有自己的方法 attachEvent和detachEvent.
语法格式如下:
element.attachEvent("onclick",listenerFunction) //添加事件
element.detachEvent("onclick",listenerFunction) //删除事件

js基础——事件绑定(事件监听)的更多相关文章

  1. node.js 基础二 开启服务器监听

    1.server.js 2.监听 一 server.js 二 监听 运行server.js后,浏览器打开:http://localhost:8888/ //====================== ...

  2. node之events 模块,并通过实例化 EventEmitter 类来绑定和监听事件

    例子来源:http://www.runoob.com/nodejs/nodejs-event-loop.html http://www.runoob.com/nodejs/nodejs-event.h ...

  3. 使用 JS 关闭警告框及监听自定义事件(amaze ui)

    使用 JS 关闭警告框及监听自定义事件(amaze ui) 一.总结 1.jquery匿名函数:第8行,jquery匿名函数,$(function(){});,有没有很简单,只是少了jquery的前面 ...

  4. JS与JQ绑定事件的几种方式.

    JS与JQ绑定事件的几种方式 JS绑定事件的三种方式 直接在DOM中进行绑定 <button onclick="alert('success')" type="bu ...

  5. Spring事件发布与监听机制

    我是陈皮,一个在互联网 Coding 的 ITer,微信搜索「陈皮的JavaLib」第一时间阅读最新文章,回复[资料],即可获得我精心整理的技术资料,电子书籍,一线大厂面试资料和优秀简历模板. 目录 ...

  6. 关于JAVA中事件分发和监听机制实现的代码实例-绝对原创实用

    http://blog.csdn.net/5iasp/article/details/37054171 文章标题:关于JAVA中事件分发和监听机制实现的代码实例 文章地址: http://blog.c ...

  7. Pox启动及事件产生、监听分析

        ./pox/pox.py , Pox       实例化core=pox.core.initialize(),即为实例化POXCore类(该类是所有组件的交接点,提供组件注册功能),监听cor ...

  8. JavaEE开发之Spring中的事件发送与监听以及使用@Profile进行环境切换

    本篇博客我们就来聊一下Spring框架中的观察者模式的应用,即事件的发送与监听机制.之前我们已经剖析过观察者模式的具体实现,以及使用Swift3.0自定义过通知机制.所以本篇博客对于事件发送与监听的底 ...

  9. Spring知识点回顾(07)事件发布和监听

    Spring知识点回顾(07)事件发布和监听 1.DemoEvent extends ApplicationEvent { public DemoEvent(Object source, String ...

  10. spring 自定义事件发布及监听(简单实例)

    前言: Spring的AppilcaitionContext能够发布事件和注册相对应的事件监听器,因此,它有一套完整的事件发布和监听机制. 流程分析: 在一个完整的事件体系中,除了事件和监听器以外,还 ...

随机推荐

  1. 【hdu 6342】Expression in Memories

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 把所有的问号都改成'1' 然后会发现只有+0?这种情况 需要把?改成+. 看看这样的0后面的1是不是由问号改过来的就好了.是的话 再 ...

  2. 【hiho一下第十二周】刷油漆

    [题目链接]:http://hihocoder.com/problemset/problem/1055 [题意] [题解] 设f[x][i]表示以第x个节点为根的子树; 不选x这个节点,然后子树里面选 ...

  3. mysql数据库优化原则

    一.一个例子 数据库需要处理的行数: 189444*1877*13482~~~479亿 如果在关联字段上加上合适的索引: 数据库需要处理的行数:368006*1*3*1~~~110万 MySQL通常是 ...

  4. spring 整合freemarker 实现模板继承

    <!--freemarker 配置--> <bean id="freemarkerConfig" class="org.springframework. ...

  5. SQL--各种约束

    约束名称 含义 主键约束 定义一个唯一的标识符 外键约束 为了维护和主键表的数据完整性 check约束 限定表中某个列的值的范围 default约束 如果没有指定插入值,则插入默认值 unique约束 ...

  6. [SQL]存储过程建表

    create PROC [dbo].CreateUserTable ( @name NVARCHAR(60) ) AS DECLARE @a NVARCHAR(max) SET @a='create ...

  7. C++表达式求值(利用数据结构栈)

    唉,刚刚用C++又又一次写了一个较完好的表达式求值程序,最后精简后程序还不到100行.这不经让我 想到了大一上学期刚学c语言时自己费了好大的劲,写了几百行并且功能还不是非常齐全(当时还不能计算有括号的 ...

  8. hdu1181(变形课)

    点击打开链接 Problem Description 呃......变形课上Harry碰到了一点小麻烦,由于他并不像Hermione那样可以记住全部的咒语而任意的将一个棒球变成刺猬什么的,可是他发现了 ...

  9. Spork: Pig on Spark实现分析

    介绍 Spork是Pig on Spark的highly experimental版本号,依赖的版本号也比較久,如之前文章里所说.眼下我把Spork维护在自己的github上:flare-spork. ...

  10. VM网络连接设置具体解释

    參考http://zhidao.baidu.com/link? url=NU8UcLsp6CCgRZzeMgnb7v0p7Z78eLYloYW355Z9fQa__pm_lFBtpfSs61ZR2Wq2 ...