2011-09-21 65 views
2

我有下面的例子中的兩個問題:的addEventListener:如何訪問事件

function doIt(){ 
    this.attribute = someValue; // Works as expected 
    alert(event.which); // Doesn't work 
} 
element.addEventListener("click",doIt,false); 

問題1:爲什麼this綁定功能,但event是不是?
問題2:什麼是適當的方法來做到這一點?

回答

4

this是一個JavaScript的內置。它始終可以訪問。 event不是。只有當前方法支持它時纔可用。

你需要有像

function doIt(event) 

什麼是this? - http://howtonode.org/what-is-this

+0

我意識到'this'是內置的,但我不瞭解'this'如何引用元素,我認爲它應該引用函數本身。我嘗試了addEventListener(「click」,function(){doit(event);}修復了'event',但是打破了'this',看起來好像比通過兩個方法都更好。 m奮力掌握... – Gary

+0

'this'指的是當前的'object',你的方法不是一個對象,它是一個'method',因此唯一可用的'object'是被選中的元素。 –

+0

這些解釋'this'的文檔是從調用者傳遞給函數的。下面他們有原型,這樣你就可以知道代碼是如何工作的 - https://developer.mozilla.org/en/DOM/element.addEventListener#section_8 – mrtsherman

相關問題