2012-09-19 9 views
5

sto cercando di applicare un evento onClick ad un array di elementi in un documento, come questo:Applicando onClick di elemento di matrice in un ciclo

for (var i = 0; i < myElems.length; i++) 
    myElems[i].onClick = "someFunction(this)"; 

Il codice è inserito all'interno di una funzione init() per l'evento onLoad del tag body. Ho notato che quando il documento viene caricato, le funzioni non funzioneranno.

ho notato, che se aggiungo un avviso() per dirmi se la funzione è il problema:

for (var i = 0; i < myElems.length; i++) 
    myElems[i].onClick = "alert('It worked!')"; 

Il documento caricherà ed eseguire l'avviso per tutti gli elementi, senza mai prendendo in considerazione se ho effettivamente cliccato l'elemento.

Cosa sto sbagliando?

+0

come si chiama la funzione init? – PitaJ

risposta

2

Il nome della proprietà è onclick.

onClick anche se HTML valido non esiste in JS in quanto è case-sensitive.

Inoltre, è necessario assegnargli un riferimento o un'espressione di funzione come ha risposto David (+1).

Fiddle

3

è necessario assegnare il 'onclick' handler ad una funzione:

for (var i = 0; i < myElems.length; i++) 
    myElems[i].onclick = function() { someFunction(this);}; 

Assegnazione tua 'alert' chiamare direttamente sparerà (come si sta vedendo). Quello che vuoi fare è assegnare il tuo gestore ad una funzione che verrà chiamata quando l'evento verrà attivato.

+1

Sigh, bastonami. –

+0

Ciò che @David Hoerster dice è che stavi assegnando il tuo gestore "onClick' a una stringa, non la funzione stessa. –

+1

Beh, mi sento sciocca. Il gestore funziona come un fascino. Ho notato anche i commenti sul metodo "onclick" piuttosto che "onClick". Grazie a tutti. – Pori

Problemi correlati