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>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值