2013-01-03 16 views
10

Possible Duplicate:
addeventhandler vs onclickOnclick vs addEventListener

Sono po 'di confusione utilizzando "onclick" "onmousedown" come una proprietà di elementi HTML.

Come ad esempio:

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

o

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

Ma alcune persone dicono che solo modo "corretto" di aggiungere "ascoltatori" sono da

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

Qual è il più modo "corretto" più supportato per farlo?

+0

Non dimenticate di upvote e contrassegnare la risposta accettata se funziona per voi ... –

risposta

4

Quest'ultimo (addEventListener()) è il modo migliore, poiché è possibile allegare più eventi dello stesso tipo allo stesso elemento.

Assegnando a onclick, ecc., Si sovrascriveranno i gestori esistenti.

+0

Ma posso fare una funzione che chiamano altre funzioni ... per aggirare il problema di "onclick". –

+0

@bluesm Certo che potresti. – alex

+0

@alex in jquery addEventListener() dà errore, Uncaught TypeError: Object [oggetto Object] non ha alcun metodo 'addEventListener' ?? Cosa fare? – anam

11

se si sa già la funzione e elemento è parte di html cioè non vengono aggiunti dinamicamente rispetto al suo bene che si aggiunge funzione inline invece di usare il metodo di chiamata extra, come "addEventListener"

Un'altra cosa da notare

Mentre onclick funziona con tutti i browser, addEventListener non funziona nelle versioni precedenti di Internet Explorer, che utilizza invece attachEvent.

OnClick è un DOM Level 0 proprietà. AddEventListener fa parte della definizione di livello DOM livello 2. Leggere su questo: http://www.w3.org/TR/DOM-Level-2-Events/events.html

gestori di eventi in linea aggiunti come attributi tag HTML, ad esempio:

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

Le tecniche di cui sopra sono semplici ma hanno alcuni svantaggi: essi consentono di avere un solo gestore di eventi per ogni elemento. Inoltre, con i gestori di eventi in linea si ottiene una separazione molto scarsa del codice JavaScript dal markup HTML.

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

Advatange di questo: è possibile aggiungere gestore di eventi multipli. anche html e javascript separte codice

Per maggiori dettagli si può leggere questo: Adding an Event Handler

+0

Suggerendo gestori di eventi _inline_: -1 – Cerbrus

+0

@Cerbrus - solo suggerito a causa di questo onclick funziona su tutti i browser –

+0

Downvote è ora bloccato: -/Lo rimuoverei se potessi, dato che hai modificato alcune informazioni in più. – Cerbrus

Problemi correlati