zoukankan      html  css  js  c++  java
  • [转]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,是在冒泡阶段添加的。大多数情况下,都是就事件处理程序添加到事件流的冒泡阶段,这样可以最大限度的兼容各种浏览器。

  • 相关阅读:
    CentOS/Linux安装VNCserver
    vncserver的安装和使用
    linux下常用FTP命令 1. 连接ftp服务器
    linux下安装dovecot
    教你如何架设linux邮件服务器postfix
    vim打开文件时显示行号
    VirtualBox 配置虚拟网卡(桥接),实现主机-虚拟机网络互通
    Linux文件权限详解
    虚拟机下CentOS 6.5配置IP地址的三种方法
    Linux基础知识之man手册的使用
  • 原文地址:https://www.cnblogs.com/n2meetu/p/5913952.html
Copyright © 2011-2022 走看看