Problema con bucle
Hola amigos, hace mucho que no escribo por aquí, pero ante todo me alegro de que estéis de nuevo en modo on:
Bueno el caso es que tengo un problemilla con un bucle que me está volviendo loco, El caso es que trato de hacer esto:
<code>for(i=1; i<45; i++){
eval("img" + i).onRelease = function(){
cb.loadThickBox (ruta + archivo + i + extension, 'loader_mc', i, items_galeria);
}
}
</code>
En lugar de esto:
<code>eval("img" + 1).onRelease = function(){
cb.loadThickBox (ruta + archivo + 1 + extension, 'loader_mc', 1 items_galeria);
}
eval("img" + 2).onRelease = function(){
cb.loadThickBox (ruta + archivo + 2 + extension, 'loader_mc', 2 items_galeria);
}
eval("img" + 3).onRelease = function(){
cb.loadThickBox (ruta + archivo + 3 + extension, 'loader_mc', 3 items_galeria);
}
</code>
Lo segundo funciona, pero me parece poco práctico poner 45 onReleses, cuando se puede hacer nu bucle (creo)...
El problema es que si bien a los 45 mcs les aplica comportamiento de botón, todos cargan la misma movie, la última de bucle, la 45 en este caso. :-(
Esoy seguro de que yo esto lo he echo alguna otra vez, pero no recuerdo cómo.
¿Donde está el fallo?
MAXer3D
procura no utilizar eval()
<code>
function a() {
for (var i = 1; i<45; i++) {
var elm = this["img"+i];
b(elm, i);
}
}
function b(elm, item) {
elm.onRelease = function() {
cb.loadThickBox(ruta+archivo+item+extension, 'loader_mc', item, items_galeria);
};
}
a();
</code>
aarom
Gracias Zigotica,
A la primera no me ha funcionado, pero co unos cambios si. Lo dejo aquí por si sirve para laguien más:
function a() {
for(var i=1; i<45; i++){
var elm = "img" + i; // esta referencia no se si ya la has "construido" antes
b(elm, i);
}
}
function b(elm, item) {
eval(elm).onRelease = function(i){// Aquí no cambiar a item
cb.loadThickBox (ruta + archivo + item + extension, 'loader_mc', item, items_galeria);
}
}
a();
El problema en la función b era doble:
- la variable elm no me funcionaba cómo referencia, así que la he puesto cómo eval(elm), y voilá...
- Pero seguía teniendo un problema con la variable i, que en la función b no entraba el valor. La he cambiado de nombre "item", y todo perfecto...
Muchas gracias... ;-)
zigotica
prueba esto:
<code>function a() {
for(var i=1; i<45; i++){
var elm = "img" + i; // esta referencia no se si ya la has "construido" antes
b(elm, i);
}
}
function b(elm, i) {
elm.onRelease = function(i){
cb.loadThickBox (ruta + archivo + i + extension, 'loader_mc', i, items_galeria);
}
}</code>