2012-09-19 7 views
5

Estoy tratando de aplicar un evento de clic a una serie de elementos en un documento, así:Aplicando onClick al elemento de la matriz en un bucle for

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

El código se coloca en el interior de una función init() para el evento onLoad de la etiqueta de cuerpo. Observé que cuando se carga el documento, las funciones no funcionan.

me he dado cuenta, que si añado una alerta() que me diga si la función es el problema:

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

El documento se puede cargar y ejecutar la alerta para todos los elementos, sin nunca teniendo en cuenta si realmente hice clic en el elemento.

¿Qué estoy haciendo mal?

+0

¿Cómo está usted llamando a la función init? – PitaJ

Respuesta

2

El nombre de propiedad es onclick.

onClick aunque es un código HTML válido, no existe en JS ya que distingue entre mayúsculas y minúsculas.

También debe asignarle una función de referencia o expresión a medida que David responde (+1).

Fiddle

3

necesita asignar el 'onclick' manejador a una función:

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

Asignación de su 'alerta' llamar directamente se disparará él (como se está viendo). Lo que quiere hacer es asignar su controlador a una función que se invocará cuando se active el evento.

+1

Suspiro, pásame. –

+0

Lo que @David Hoerster dice es que usted estaba asignando su controlador 'onClick' a una cadena, no a la función en sí. –

+1

Bueno, me siento tonto. El controlador funciona como un hechizo. También noté que los comentarios sobre el método eran "onclick" en lugar de "onClick". Gracias a todos. – Pori

Cuestiones relacionadas