事件处理函数的注册,event参数的传递

下面列出的是三种常用的方式

1、在元素标签中给事件属性赋值(所有浏览器都支持)

测试1

html代码:

<button οnclick='test(1,event,2)'>test</button>

js代码:

function test(){

for(var i=0;i<arguments.length;i++){

document.write(arguments[i]+'<br/>');

}

}

结果:

1

[object MouseEvent]

2

测试2

html代码:

<button οnclick='test()'>test</button>

js代码:

function test(arg1,arg2,…,argN){

for(var i=0;i<arguments.length;i++){

document.write(arguments[i]+'<br/>');

}

}

结果:

什么也不输出

结论:

<button οnclick='test(here)'>test</button>

  1. here处有几个参数,就传进几个参数,不受test函数的形参个数影响
  2. event参数用“event”关键字传递
  3. 如果什么参数也不传,IE浏览器可以通过window.event获得事件对象,其他浏览器暂时不知道怎么获得

2、用js给元素对象添加事件属性(所有浏览器都支持)

测试1

html代码:

<button id='btn1'>test</button>

js代码:

document.getElementById('btn1').οnclick=test;

function test(){

for(var i=0;i<arguments.length;i++){

document.write(arguments[i]+'<br/>');

}

}

结果:

FF:[object MouseEvent]

IE:arguments.length=0

结论:

IE要获得事件对象,需用window.event,其他浏览器会默认传入一个事件对象

3.使用addEventListener()removeEventListener()方法

使用这种方法可以为一个对象注册多个事件处理函数。另外,IE使用对应的attachEvent()detachEvent()方法

都会为事件处理函数传入一个事件对象,如果想为事件处理函数传入多个参数,可以这样写:

 

            document.getElementById("btn_2").addEventListener("click",function(){test2(arguments[0],1,2)},false);
            document.getElementById("btn_2").attachEvent("onclick",function(){test2(arguments[0],1,2)});//IE

 

 

 

 

参考资料:

 [1]张亚飞,《JavaScript权威指南》

 

转载于:https://www.cnblogs.com/acaciasun/archive/2013/06/02/3113948.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值