2011-01-12 131 views
0

jQuery中花費這麼多時間後,我對我的老式JS生鏽...通過附加的事件偵聽器傳遞事件

的問題:當安裝一個事件要觸發的對象一個函數,你如何將事件傳遞給上述函數?

實例功能:

myFunction(e){ 
    ... 
} 

例事件附件:

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

回答

1

做處理程序接受一個參數,說event,並把它傳遞給你的函數:

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

的事件處理程序總是獲取當前事件作爲參數傳遞給W3C模型。

對於IE,您必須通過window.event獲取參數。因此,在功能,你可以寫這樣的:

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

太快了!這麼快,我不能接受它作爲答案呢。謝謝! (我會回來接受它...) –

1

你可以嘗試使用arguments。這個變量會自動填充到本地作用域中。它是傳入函數的所有參數的數組。如果您將arguments傳遞給您的myfunction,則傳遞到偶處理程序的所有內容將作爲數組傳遞到myfunction

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

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