我嘗試以下操作:JavaScript的傳遞活動在封閉
f.addEventListener('submit',(function(frm){
var func = (function(e){somefunction(e,frm);})(e);
})(f),false);
但這種失敗。我想將形式(f)作爲靜態引用傳遞,將動態事件對象傳遞給命名函數'somefunction'。
上面我沒有工作,什麼是通過兩個正確的語法?
我嘗試以下操作:JavaScript的傳遞活動在封閉
f.addEventListener('submit',(function(frm){
var func = (function(e){somefunction(e,frm);})(e);
})(f),false);
但這種失敗。我想將形式(f)作爲靜態引用傳遞,將動態事件對象傳遞給命名函數'somefunction'。
上面我沒有工作,什麼是通過兩個正確的語法?
問題是,每個function
s都被立即調用,其中undefined
實際上被傳遞到addEventListener()
。
你會想,而不是沒有它的調用括號中的function
S的return
一個這樣的事件以後可以稱之爲:
f.addEventListener('submit', (function (frm) {
return function (e) {
someFunction(e, frm);
};
})(f), false);
雖然與事件綁定,你可能不一定需要閉合,作爲<form>
將是所述function
的上下文(this
)通過:
f.addEventListener('submit', someFunction, false);
function someFunction(e) {
var frm = this;
// ...
}
不能確切地確定你正在做什麼,但看起來你正在試圖通過事件處理程序手動傳遞表單。相反,保存的參考,只是指它在處理程序,如
f.addEventListener('submit',function(){
var func = function(e){
somefunction(e,f);
};
},false);
你不應該需要自我執行功能,除非我在這裏失去了你的意圖
笑啊,這是更多的是看科幻的ITLL工作型的東西。它周圍肯定有更清潔的方法。 –
gotcha;)有趣的功能 –