通过附加的事件侦听器传递事件

时间:2011-01-12 21:20:47

标签: javascript

在jQuery上花了这么多时间之后,我对我老式的JS生锈了......

问题:将事件附加到要触发函数的对象时,如何将事件传递给所述函数?

示例功能:

myFunction(e){
    ...
}

事件附件示例:

document.getElementById('blargh').onkeypress = function(){myfunction([what do I put here to pass the event?])};

2 个答案:

答案 0 :(得分:1)

让处理程序接受一个参数,比如event,并将其传递给你的函数:

document.getElementById('blargh').onkeypress = function(event){myfunction(event)};

事件处理程序始终在W3C模型中获取作为参数传递的当前事件。

对于IE,您必须通过window.event获取参数。因此,在函数中你可以编写类似的东西:

function(event) { event = event || window.event; myfuntion(event);}

答案 1 :(得分:1)

您可以尝试使用arguments。此变量将自动填充到本地范围中。它是传递给函数的所有参数的数组。如果您将arguments传递给myfunction,则传递到偶数处理程序的所有内容都将作为数组传递给myfunction

document.getElementById('blargh').onkeypress = function(){myfunction(arguments)};

function myfunction(args)
{
   alert(args[0]);
}