我正在尝试以下方法:
f.addEventListener('submit',(function(frm){
var func = (function(e){somefunction(e,frm);})(e);
})(f),false);
但这是失败的。我想将表单(f)作为静态引用传递给动态事件对象传递给命名函数'somefunction'。
我上面的内容不起作用,传递两者的正确语法是什么?
答案 0 :(得分:4)
问题是每个function
都会立即被调用,undefined
实际上被传递给addEventListener()
。
您需要return
function
之一,而不使用其调用括号,以便事件可以在以后调用它:
f.addEventListener('submit', (function (frm) {
return function (e) {
someFunction(e, frm);
};
})(f), false);
虽然使用事件绑定,您可能不一定需要闭包,因为<form>
将是this
传递的上下文(function
):
f.addEventListener('submit', someFunction, false);
function someFunction(e) {
var frm = this;
// ...
}
答案 1 :(得分:1)
不确切地说你正在尝试做什么,但看起来你正试图通过事件处理程序手动传递表单。而是保存引用,并在处理程序中引用它,例如
f.addEventListener('submit',function(){
var func = function(e){
somefunction(e,f);
};
},false);
除非我在这里错过你的意图,否则你不应该需要自动执行功能