Cita:
Iniciado por Fernand0
Porque no se declara de esa manera. Al hacerlo de esa manera automaticamente la funcion se ejecuta.
Tenes 4 maneras de hacerlo
Código Javascript
:
Ver originalimagen.onclick= function() { clickImg(libros,""+i); };
Código Javascript
:
Ver originalimagen.addEventListener("click", function() {
clickImg(libros,""+i);
});
Esas dos formas son incorrectas. La variable i dentro de las funciones está referenciando una variable definida en un entorno donde es índice de un bucle.Por lo tanto, cuando se ejecute ese callback, independientemente de la imagen sobre la que se haga click, la variable "i" siempre valdrá libros.length.
Si quieres hacerlo así, tienes que hacer que la variable "i" referencie a una variable definida en un contexto diferente.Por ejemplo:
Código Javascript
:
Ver originalimagen.onclick= (function(i) { return function() { clickImg(libros,""+i); }})(i);
Eso es una función autollamada, que retorna una función callback, que es la que se asigna al evento.
Lo importante es que la variable "i" de esa función callback, ya no referencia a la variable "i" del bucle.Referencia al parámetro "i" de la función autollamada, por lo que tiene su propia "copia", y no sufre del problema anterior.