JavaScript - Problema con .onclick=function(){scrpit}

   
Vista:

Problema con .onclick=function(){scrpit}

Publicado por fanaes (3 intervenciones) el 29/09/2015 15:44:16
Buenas tengo un problema con la asignacion de etiquetas IMG al queres ponerle onclick a ellas.
la forma de que la tengo que hacer asi es que estas <IMG> es que las creo con javascpirt
hay un ciclo for que llama a la funcion CrearImagen y crea las imagenes.
29moz1g

el problema esta cuando quiero asignarle el onclick,(al hacer click llame a la funcion Buscar()), y que le pase un parametro (en este caso el numero de su id)

2iivez6

e intentado ponerselo cuando creo la imagen con
imagen.onclick=Buscar(Nm);
pero llama a la funcion inmediatamente,
y entre comillas no me toma el onclick (imagen.onclick="Buscar(Nm)";)

no encontre otra forma de asignarle el onclick='' a elementos creados desde js que me funcionen .
Muchas gracias por su tiempo =D
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

Problema con .onclick=function(){scrpit}

Publicado por xve (1596 intervenciones) el 29/09/2015 16:48:39
Hola Fanaes, según entiendo, creo que tu problema esta en la carga del DOM de la pagina...

Haz una prueba, una vez cargadas las imágenes, llama a la función AsignarOnclick()

Coméntanos, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema con .onclick=function(){scrpit}

Publicado por fanaes fanaes159@gmail.com (3 intervenciones) el 29/09/2015 17:06:00
Gracias por tu comentario.
en la consola me dice si llamo a la función luego de cargar las imágenes (por debajo de todo e puesto la llamada de la función):
Uncaught TypeError: Cannot set property 'onclick' of null
AsignarOnclick @ Ask.js:80
(anonymous function) @ Ask.js:83

80: document.getElementById(r).onclick=function(){Buscar(r)};
83 : AsignarOnclick();
creo que como esta vacío el onclick no puedo asignarle.
si quieres subo la pagina a un host

/editado
si el problema esta en el DOM:
puse document.getElementById(1).onclick=function(){Buscar(1)}; y me tira el mismo error
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Problema con .onclick=function(){scrpit}

Publicado por xve (1596 intervenciones) el 29/09/2015 17:29:02
Hola fanaes, la verdad es que sin ver el código entero, o la pagina no es muy difícil...puedes publicarla en internet?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema con .onclick=function(){scrpit}

Publicado por fanaes fanaes159@gmail.com (3 intervenciones) el 29/09/2015 17:49:06
lo tuve que subir a mega por que no me han activado el host todavía :S
https://mega.nz/#!6FNwHTwI!5o1BcprVfOjOudLEHF88drefFsuTqbGoJ-gcN5R3HN0
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Vainas

Problema con .onclick=function(){scrpit}

Publicado por Vainas (239 intervenciones) el 30/09/2015 21:52:10
Buenas:

Tu problema viene por que tienes que aprender lo que es closures. Basicamente piensas que le estas pasando a cada onclick el valor de "r" pero en realidad el accede es al ultimo valor de "r" cuando llamas al onclick.

Para solucionarlo yo pasaria siempre this (suele ser una forma). otra forma es pasar event y obtener el valor de el id con: event.target.id.

Aparte de lo anterior: A tu error Uncaught TypeError: Cannot set property 'onclick' of null es por que al intentar acceder a document.getElementById(r) no esta obteniendo el objeto deseado y por eso no puede asignar onlick a un objeto no definido.

Tendras que llamar primero a crearImagen y luego ya podras acceder a cada uno de ellos para asignarle el onclick.

Si puedo te dejo un ejemplo mañana.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar