He intentado asignar una función al evento onclick de una etiqueta "a" creada dinámicamente en JavaScript. Todas las etiquetas se crean en un bucle de la siguiente manera:¿Cómo funciona una función en un bucle (que devuelve otra función)?
for (var i = 0; i < 4; i++)
{
var a = document.createElement("a");
a.onclick = function() { alert(i) };
document.getElementById("foo").appendChild(a);
}
El valor alertado para los cuatro enlaces siempre es "4". Bastante obvio. Cuando buscando en Google me encontré con un post que muestra el siguiente fragmento de código:
a.onclick = (function(p, d) {
return function(){ show_photo(p, d) }
})(path, description);
logré retocarlo para mis necesidades y me la alerta (i) que funcione correctamente, pero Voy a apreciar si alguien podría explicar exactamente lo que hace el código anterior
Hola, ¿Me podría decir por qué alerta "4"? ¿No debería ser "2"? Gracias. – Tarik
for (var i = 0; i <3; i ++) deja i == 4 al final –
No, me deja como 3. –