Ver Mensaje Individual
  #3 (permalink)  
Antiguo 28/05/2013, 23:00
rodricrzz
 
Fecha de Ingreso: noviembre-2009
Mensajes: 41
Antigüedad: 15 años
Puntos: 0
Respuesta: Funcion onclick dentro de bucle for

Cita:
Iniciado por ggomez91 Ver Mensaje
Hola, te estas metiendo con closures, para entender bien que pasa pásate por aca: http://tobyho.com/2011/11/02/callbacks-in-loops/

Básicamente necesitas una función extra para que bindee el evento con el boton:
Código Javascript:
Ver original
  1. for (var i=0; i<vecpeliculas.length; i++){
  2.     bind(boxButton[i], i);
  3. }
  4.  
  5. function bind(boton, i){
  6.     boton.onclick = function(){
  7.         alert("mensaje" + i);
  8.     }
  9. }
Gracias por contestar!!
Vos decis que colocando el bucle y luego la funcion debe funcionar? porque no lo hace..

Quizas esté haciendo algo mal, te paso lo que hice (lo recorté un poco quitando algun codigo innecesario que no tiene relevancia)

Código:
var vecpeliculas = []; 
vecpeliculas[0] = peliculas={titulo:"Avatar",categoria:"Aventura",foto:"avatar.jpg", descripcion: "Descripcion Avatar", formato: "bluray", precio: "199", cantidad: ""};
vecpeliculas[1] = peliculas={titulo:"IronMan 2",categoria:"Comedia",foto:"ironman2.jpg", descripcion: "Descripcion IronMan 2", formato: "bluray", precio: "299", cantidad: ""};

for(var i=0; i<vecpeliculas.length; i++){
			eval("var boxButton" + i + "= document.createElement('a')");
			eval("boxButton" + i + ".innerHTML = 'AGREGAR'");
			eval("boxButton" + i + ".className = 'box-button'");
}

function comedia(){
	// Aca pongo los appendChild correspondientes para que los muestre y esta funcion se ejecuta al hacer un click en un enlace
}

for (var i=0; i<vecpeliculas.length; i++){
	bind(boxButton[i], i);
}

function bind(boton, i){
    boton.onclick = function(){
        alert("mensaje" + i);
    }
}

Muchas gracias y espero que no te sea engorroso el codigo ya que lo "resumí" para que veas lo necesario.