2013-01-03 40 views
10

Possible Duplicate:
addeventhandler vs onclick的onclick VS的addEventListener

我用 「的onclick」, 「onmousedown事件」 爲HTML元素的屬性有點混亂。

如:

<button onclick="my_JS_function()"></button> 

<div onmousedown="my_another_JS_funciton"></div> 

但有些人說,只有 「合適的」,並稱 「聽衆」 的方式是通過

document.getElementById("my_id").addEventListener("onclick", my_JS_function, false); 

什麼是更「適當的」更支持這樣做的方式?

+0

不要忘記給予好評和標記答案,接受它是否適合你... –

回答

4

後者(addEventListener())是最好的方法,因爲你可以將相同類型的多個事件同一個元素。

通過分配到onclick,等等,你將覆蓋現有的處理程序。

+0

但我可以做哪些調用其它函數的函數...規避「onclick」的問題。 –

+0

@bluesm當然可以。 – alex

+0

@alex在jquery addEventListener()給出錯誤,Uncaught TypeError:Object [object Object]沒有方法'addEventListener'??該怎麼辦? – anam

11

如果你已經知道的功能和元素的HTML即不獲得動態添加比它好,你添加內聯函數,而不是使用像「的addEventListener」額外的方法調用部分

另一個要注意

雖然的onclick在所有瀏覽器工作,的addEventListener不會在舊版本的IE瀏覽器,它使用的attachEvent,而不是工作。

OnClickDOM級別0屬性。 的addEventListenerDOM級別2定義的一部分。閱讀關於這一點:http://www.w3.org/TR/DOM-Level-2-Events/events.html

聯事件處理程序添加HTML標籤屬性,例如:

<a href="gothere.htm" onlick="alert('Bye!')">Click me!</a> 

上述技術很簡單,但有一定的缺點:他們讓你有每個只有一個事件處理程序元件。另外,通過內聯事件處理程序,您可以將JavaScript代碼與HTML標記分離得很差。

document.getElementById("my_id").addEventListener("onclick", my_JS_function, false); 

這個的Advatange:您可以添加多個事件處理程序。也separte HTML和JavaScript代碼

更多的細節,你可以這樣說的:Adding an Event Handler

+0

暗示_inline_事件處理程序:-1 – Cerbrus

+0

@Cerbrus - 只是建議,因爲這的onclick的作品在所有的瀏覽器 –

+0

Downvote的現在鎖定: - /我想,如果我可以刪除它,因爲你多一些的信息進行編輯。 – Cerbrus