我正在尝试以下操作:
f.addEventListener('submit',(function(frm){
var func = (function(e){somefunction(e,frm);})(e);
})(f),false);
但这是失败的。我想将表单 (f) 作为静态引用和动态事件对象传递给命名函数“somefunction”。
我上面的内容不起作用,传递两者的正确语法是什么?
我正在尝试以下操作:
f.addEventListener('submit',(function(frm){
var func = (function(e){somefunction(e,frm);})(e);
})(f),false);
但这是失败的。我想将表单 (f) 作为静态引用和动态事件对象传递给命名函数“somefunction”。
我上面的内容不起作用,传递两者的正确语法是什么?
问题是每个function
s 都被立即调用,undefined
实际上被传递给addEventListener()
.
您需要替换没有调用括号return
的 s 之一,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;
// ...
}
不知道您正在尝试做什么,但是看起来您正试图通过事件处理程序手动传递表单。而是保存一个引用并在处理程序中引用它,例如
f.addEventListener('submit',function(){
var func = function(e){
somefunction(e,f);
};
},false);
除非我在这里错过了您的意图,否则您不需要自我执行功能