首先参考:javascript attachEvent和addEventListener 使用方法

attachEvent方法,为某一事件附加其它的处理事件。(不支持Mozilla系列)
addEventListener方法 用于 Mozilla系列
举例:
document.getElementById("btn").onclick = method1; 
document.getElementById("btn").onclick = method2; 
document.getElementById("btn").onclick = method3;
如果这样写,那么将会只有medhot3被执行
写成这样:
var btn1Obj = document.getElementById("btn1"); 
//object.attachEvent(event,function); 
btn1Obj.attachEvent("onclick",method1); 
btn1Obj.attachEvent("onclick",method2); 
btn1Obj.attachEvent("onclick",method3);
执行顺序为method3->method2->method1

如果是Mozilla系列,并不支持该方法,需要用到addEventListener
var btn1Obj = document.getElementById("btn1"); 
//element.addEventListener(type,listener,useCapture); 
btn1Obj.addEventListener("click",method1,false); 
btn1Obj.addEventListener("click",method2,false); 
btn1Obj.addEventListener("click",method3,false);
执行顺序为method1->method2->method3

JavaScript为事件处理器传递参数
方法一:
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));

think8848的简化代码:
if ( x.addEventListener)    //如果浏览器为Firefox
{
    x.addEventListener("click",function()
                                            {        
                                                opentree(id,level);   //opentree为外部定义的一个执行函数,id,level为实参;
                                            });
}
else    //浏览器为IE
{
    x.attachEvent("onclick",function()
                                        {
                                            opentree(id,level); 
                                        });
}

方法二:
<html>
<head>
 <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
 <title></title>
</head>
<body>
 <a href="#" id="mylink">这是连接</a>

<script type="text/javascript">
function AttachEvent(type, target, handler, owner)
{
        var eventHandler = handler;
    if(owner)
    {
    debugger;
            // 在这里重新定义一个处理函数
            eventHander = function(e)
            {
                   handler.call(owner, e);
            }
    }
  
    if(window.document.all)
            target.attachEvent("on" + type, eventHander );
    else
            target.addEventListener(type, eventHander, false);
}

function MyLink_Click(e)
{
        alert(this.tagName);
        var target = e.srcElement || e.target;
        alert(target.href);
}

function test()
{
 var mylink = window.document.getElementById("mylink");
 AttachEvent("click", mylink, MyLink_Click, mylink);

}
 </script>

<input type="button" value="AttachEvent" οnclick="test()" />
</body>
</html>

转载于:https://www.cnblogs.com/fightLonely/archive/2011/03/22/1991029.html

JavaScript为事件处理器传递参数 (转)相关推荐

  1. jQuery事件之传递参数

    jQuery事件之传递参数 转载▼    我们经常使用jQuery中给DOM元素绑定事件来执行一些动态的功能,但是很少有人知道在jQuery中是如何来给DOM元素传递参数以及如何绑定自己定义的事件. ...

  2. vue 事件调用 传参_Vue 事件如何传递参数?

    Vue 事件如何传递参数? 事件函数参数传递: 普通参数和事件对象传递格式如下: 调用函数传参 点秋香 vue事件绑定-参数传递实例如下: vue事件绑定-参数传递 xinbiancheng.cn { ...

  3. vue 点击事件传递多个参数_Vue子组件监听事件中传递参数的方法

    在子组件中,我们可以通过以下方式监听事件: v-on:click="$emit('funcName',a)" 如果需要传多个参数,可以通过以下方式: v-on:click=&quo ...

  4. JavaScript中事件处理器中的event参数

    在大部分浏览器中,当一个事件处理器被触发时,名为Event的类实例会作为第一个参数传入处理器中.而一直占据主流地位的ie却以自己专的方式行事,将Event实例保存到一个名为event的全局属性中. i ...

  5. JavaScript:如何给setTimeout传递参数

    本文介绍一种在使用异步函数setTimeout时给其带上参数的方法. 写这篇文章的时候,在高级浏览器比如Google Chrome上,setTimeout已经支持带第二个以外的参数,而且IE10 .I ...

  6. jquery绑定点击事件形参_JQuery 绑定事件时传递参数的实现方法

    如题,比如我想在$(":text").bind("keyup",funcionName);将当前的文本框作为参数传递给 functionName所代表的函数,应 ...

  7. vue中 @click 绑定点击事件 方法传递参数 typescript(通用)

    话不多说还是直接上图 简单明了 <template><div id="header"><img src="../../assets/logo ...

  8. C#中在定义事件委托时怎样跨窗体传递参数

    场景 C#中委托与事件的使用-以Winform中跨窗体传值为例: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/100150700 ...

  9. javascript的事件绑定与事件委托

    昨天有位web前端爱好者问关于javascript事件绑定和事件委托的知识,小编今天就来跟大家交流一下这个知识点! 事件绑定:事件是用户或者浏览器自身进行的特定的行为,这些事件都有自己特定的名字,如: ...

最新文章

  1. pip 20.3 新版本发布!即将抛弃 Python 2.x
  2. 理论篇 GIT使用笔记
  3. ISV客户博客系列:Persistent Systems 使用Windows Azure交付基于Java的CloudNinja项目
  4. 深入探讨JavaScript函数
  5. POJ NOI MATH-7830 求小数的某一位
  6. 《设计模式解析(第2版•修订版)》—第1章 1.4节应对变化:使用功能分解
  7. 可更新聚集列存储索引幻想
  8. RHEL 5.1 下面安装tftp服务
  9. 一个简易的QQ魔法卡片炼卡消耗计算器
  10. 学生学籍的计算机管理属于,随着计算机的飞速发展,其应用范围不断扩大,某学校学生学籍的计算机管理属于__应用领域。A.科学计...
  11. openwrt路由器打印机服务器设置_openwrt路由器打印机服务器设置_TP-Link无线路由器打印机设置指南...
  12. GIS定位和自定义图标
  13. SEG1数字中继模块(中继网关) 产品型号:SEG1
  14. 台式机耳机或音响使用
  15. C++排序算法利用EsayX实现过程可视化
  16. 细说jbd(journal-block-device) 源码分析
  17. 单相桥式有源逆变电路,单相半波可控整流电路,单相桥式半控整流电路,单相桥式全控整流电路
  18. G304电量查询与灯光讲解(驱动下载见上篇文章)
  19. 大淘客CMS建站入门教程
  20. 华为手机视频解码首屏时延比较大的问题

热门文章

  1. Matlab线性/非线性规划优化算法(4)
  2. php大量数据库抽象,PHP系列(十二)数据库抽象层pdo
  3. php dm,DM_cp.php
  4. wdos8系统服务器丢失,win8一键修复丢失DLL,常见dll丢失一键修复办法
  5. python学习与数据挖掘_python机器学习与数据挖掘
  6. 字符串固定长度 易语言_易语言宽字符数据类型怎么设置
  7. RNN、LSTM、GRU的原理和实现
  8. 软考信息安全工程师学习笔记三(1.3 信息安全管理基础)
  9. Maven的基本应用
  10. ES6-weakset集合