JavaScript通过attachEvent和detachEvent方法处理带参数的函数

无标题文档

    var theP;  //P标签对象   
    var show=function(msg){    //直接定义 function show(msg) 效果是一样的
        return function(){   
            alert(msg+" from show()");
            if(window.addEventListener){  //FF etc.
                 theP.removeEventListener("click", theP.show11, false);
            }
            else{ //IE
                 theP.detachEvent("onclick", theP.show11);
            }
        }
    }
    var show2=function(msg){    //直接定义 function show2(msg) 效果是一样的
        return function(){   
            alert(msg+" from show2()");
        }
    }
   
    function showDef(){
        alert("showDef()");           
       
         if(window.addEventListener){  //FF etc.
              theP.removeEventListener("click", showDef, false);
         }
         else{ //IE
              theP.detachEvent("onclick", showDef);
         }
    }
   
    window.onload=function(){
        theP=document.getElementById("pid");
       
        theP.show11=show("可以detach的带参数方法");
       
        if(window.addEventListener) // not IE
        {
            //for FF.etc
            theP.addEventListener("click", theP.show11, false);
            theP.addEventListener("click", showDef, false);
        }
        else
        {
            //for IE           
            theP.attachEvent("onclick", theP.show11);
            theP.attachEvent("onclick", show2('不能detach的带参数方法'));//区别于上一个,这里不能detach
           
            theP.attachEvent("onclick", showDef);  //无参数的方法直接写
        }       
    }

   

Click Me

[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]

(0)

相关推荐

  • Javascript 的addEventListener()及attachEvent()区别分析

    Mozilla中: addEventListener的使用方式: target.addEventListener(type, listener, useCapture); target: 文档节点.document.window 或 XMLHttpRequest. type: 字符串,事件名称,不含"on",比如"click"."mouseover"."keydown"等. listener :实现了 EventListene

  • javascript attachEvent绑定多个事件执行顺序问题

    常见的绑定事件有直接绑定在页面元素中比如<div id="wrap" onclick="a();"></div>,这个换种方法也就是分离出来写在js代码里如document.getElementById('wrap').onclick = function(){a();},此时如果需要绑定多个方法则直接写在一起即可如document.getElementById('wrap').onclick = function(){a();b();}或&

  • Javascript attachEvent传递参数的办法

    复制代码 代码如下: var newopen = function(id,level) { return function() { opentree(id,level);//该函数为外部定义的一个执行函数: } } x.attachEvent("onclick",newopen(id,parseInt(level)+1)); y.attachEvent("onclick",newopen(id,parseInt(level)+2)); IE only想要知道兼容的代

  • javascript attachEvent和addEventListener使用方法

    attachEvent方法 按钮onclick addEventListener方法 按钮click 两者使用的原理:可对执行的优先级不一样,下面实例讲解如下: attachEvent方法,为某一事件附加其它的处理事件.(不支持Mozilla系列) addEventListener方法 用于 Mozilla系列 举例: Java代码 复制代码 代码如下: document.getElementById("btn").onclick = method1; document.getElem

  • javascript中attachEvent用法实例分析

    本文实例讲述了javascript中attachEvent用法.分享给大家供大家参考.具体分析如下: 一般我们在JS中添加事件,是这样子的 obj.onclick=method 这种绑定事件的方式,兼容主流浏览器,但如果一个元素上添加多次同一事件呢? obj.onclick=method1 obj.onclick=method2 obj.onclick=method3 如果这样写,那么只有最后绑定的事件,这里是method3会被执行,这个时候我们就不能用onclick这样的写法了,主角改登场了,

  • JavaScript通过attachEvent和detachEvent方法处理带参数的函数

    无标题文档 var theP; //P标签对象 var show=function(msg){ //直接定义 function show(msg) 效果是一样的 return function(){ alert(msg+" from show()"); if(window.addEventListener){ //FF etc. theP.removeEventListener("click", theP.show11, false); } else{ //IE t

  • JS中setInterval、setTimeout不能传递带参数的函数的解决方案

    在JS中无论是setTimeout还是setInterval,在使用函数名作为调用句柄时都不能带参数,而在许多场合必须要带参数, 这就需要想方法解决. 一.采用字符串形式:--(缺陷)参数不能被周期性改变 setInterval("foo(id)",1000); 二.匿名函数包装 (推荐) 复制代码 代码如下: window.setInterval(function() { foo (id); }, 1000); 这样就可以周期性执行foo(id)这个函数,而且把变量id传递进去: 三

  • python函数装饰器之带参数的函数和带参数的装饰器用法示例

    本文实例讲述了python函数装饰器之带参数的函数和带参数的装饰器用法.分享给大家供大家参考,具体如下: 1. 函数带多个参数 # 普通的装饰器, 打印函数的运行时间 def decrator(func): def wrap(*args, **kwargs): start_time = time.time() res = func(*args, **kwargs) end_time = time.time() print('运行时间为', end_time-start_time) return

  • JavaScript 事件属性绑定带参数的函数

    例如不能采用这种调用方式:element.onclick = test();element.onclick = test(arg1,arg2);只能通过element.onclick = function(){ ... };或者element.onclick = test这种方式来实现,所以无法给函数传递参数.参考了大量的网上资料,解决这个问题的方式,以代码为例,如下所示: 复制代码 代码如下: function Handler() { }; Handler.prototype = { /* *

  • attachEvent的使用方法与传递参数[IE|firefox]

    比较好的解决办法可以用作用域,比较下下面的变量str在作用域内和作用域外的值 复制代码 代码如下: <input id="button1" type="button" value="按我" />  <script language="javascript">  window.onload=function(){      var obj=document.getElementById("but

  • javascript提取URL的搜索字符串中的参数(自定义函数实现)

    今天在犀牛书上发现了一个有用的函数 urlArgs(提取URL的搜索字符串中的参数).我们经常会看到有的页面链接地址后面会跟有参数,比如 http://www.xxx.com/?username=yyy&password=zzz 之类的,很多时候我们需要获得这些参数的值(yyy和zzz),那么就可以利用 urlArgs 函数,通过该函数的返回值(返回值是对象)的属性来获取. urlArgs 函数代码: 复制代码 代码如下: function urlArgs(){ var args = {}; v

  • Java 带参数与带返回值的方法的定义和调用

    目录 带参数方法的定义和调用 形参和实参 带参数方法练习 带返回值的方法的定义和调用 带返回值的方法定义 带返回值的方法调用 带参数方法的定义和调用 形参和实参 形参:方法定义中的参数 相当于变量定义格式,例int number 实参:方法调用中参数 等同于变量或常量,例如10   , number 带参数方法练习 需求: 设计一个方法用于打印两个数中最大数,数据来自于方法参数 思路: 1.定义一个方法,用于打印两个书中的最大数,例如getMax() public static void get

  • JavaScript函数参数使用带参数名的方式赋值传入的方法

    本文实例讲述了JavaScript函数参数使用带参数名的方式赋值传入的方法.分享给大家供大家参考.具体分析如下: 这里其实就是在给函数传递参数的时候,可以使用 参数名:参数值的方式传递,这样不会传递错.不过下面的代码是通过字典来实现的,不像python原封就支持这样的方法 function foo({ name:name, project:project}) { Print( project ); Print( name ); } 调用方法 foo({ name:'soubok', projec

  • JavaScript中数组对象的那些自带方法介绍

    /** * 本文纯粹是梳理一下目前W3C标准中Array对象的自带Method. * 全文没啥营养,不过最后性能测试的部分,倒是抛出了一些疑问. */ 赋值方法 (Mutator methods) 这些方法直接修改数组自身 pop 和 push Array.pop(); // 删除数组最后一个元素,返回被删除的元素 Array.push(element1, ..., elementN); // 在数组尾部插入1-N个元素,返回操作后数组的length 通过这 pop 和 push ,就能把数组模

随机推荐