[转]javascript指定事件处理程序包括三种方式:

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[转]javascript指定事件处理程序包括三种方式:相关的知识,希望对你有一定的参考价值。

javascript指定事件处理程序包括三种方式:
(1):DOM0级事件处理程序
如:

代码如下:

var btn=document.getElementById("mybtn"); //取得该按钮的引用
btn.onclick=function(){
alert(‘clicked‘);
alert(this.id); // mybtn


以这种方式添加的事件处理程序会在事件流的冒泡阶段被处理。
删除DOM0级方法指定的事件处理程序:
btn.onclick=null; // 删除事件处理程序
}
(2):DOM2级事件处理程序
DOM2 级事件定义了两个方法,用于处理指定和删除事件处理程序的操作:addEventListener()和removeEventListener()。所 有DOM节点中都包含这两个方法,并且它们都接受3个参数:要处理的事件名,做为事件处理程序的函数和一个布尔值。最后这个参数如果是true,表示在捕 获阶段调用事件处理程序;如果是fasle,表示在冒泡阶段调用事件处理程序。
如:

代码如下:

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


使用DOM2级事件处理程序的主要好处是可以添加多个事件处理程序。
如:

代码如下:

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


这里为按钮添加了两个事件处理程序。这两个事件处理程序会按照它们的顺序触发。
通过addEventListener()添加的时间处理程序只能使用removeEventListener()来移除,移除时传入的参数与添加时使用的参数相同。这也意味着通过addEventListener()添加的匿名函数将无法移除。
如:

代码如下:

var btn=document.getElementById("mybtn");
btn.addEventListener("click",function(){
alert(this.id);
},false);
//移除
btn.removeEventListener("click",function(){ //这样写没有用 (因为胃第二次与第一次相比是一个完全不同的函数)
alert(this.id);
},false);


解决办法:

代码如下:

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

btn.removeEventListener("click",hander,false); // 有效


注意:这里我们的第三个参数都是false,是在冒泡阶段添加的。大多数情况下,都是就事件处理程序添加到事件流的冒泡阶段,这样可以最大限度的兼容各种浏览器。

以上是关于[转]javascript指定事件处理程序包括三种方式:的主要内容,如果未能解决你的问题,请参考以下文章

javascript事件编程

javaScript系列 [28]

浅谈JavaScript的事件(事件处理程序)

浅谈JavaScript的事件(事件委托)

《javascript高级程序设计》之事件

事件与状态机 事件驱动编程