Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Problema con bucle for

Estas en el tema de Problema con bucle for en el foro de Javascript en Foros del Web. Alguien me podria decir porque no funciona, una parte del codigo es jquery y la otra javascript normal, dado que la solucion esta en javascript ...
  #1 (permalink)  
Antiguo 01/10/2013, 12:54
 
Fecha de Ingreso: julio-2013
Mensajes: 158
Antigüedad: 10 años, 9 meses
Puntos: 6
Problema con bucle for

Alguien me podria decir porque no funciona, una parte del codigo es jquery y la otra javascript normal, dado que la solucion esta en javascript normal lo e posteado en javascript y no en jquery gracias.

Cita:
$(document).ready(function() {

var color1 = '#AC193D';
var color2 = '#D24726';
var color3 = '#FF8F32';
var color4 = '#930';
var color5 = '#82BA00';
var color6 = '#008A17';
var color7 = '#004B8B';
var color8 = '#0072C6';
var color9 = '#5DB2FF';
var color10 = '#008299';
var color11 = '#03B3B2';
var color12 = '#8C0095';
var color13 = '#DC4FAD';
var color14 = '#000000';
var color15 = '#585858';
var color16 = '#001940';
var color17 = '#030';
var color18 = '#036';

for (x=0; x<=18; x++) {

$("#modules-colors-nav-"+x).click(function(event){
$("#nav").css({ background: color+x });
});
};

});
Basicamente lo que hace es que al dar click en determinado div me cambia el color, si sustituyo color+x por color18, color17 si funciona.
  #2 (permalink)  
Antiguo 01/10/2013, 12:58
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Problema con bucle for

el operador + se usa para sumar o concatenar, no para referenciar a una variable global, en tal caso sería:

$("#nav").css({ background: window[color + x] });

o mejor, si convierte a todas esas variables colorn en un arreglo
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 01/10/2013, 13:13
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Problema con bucle for

no uses variables, usa un array. recorre el array con el ciclo, pero en lugar de la declaración (18) usa el largo del array (como te dice mycol)

por otro lado, deberás usar una función anónima y para pasarle el indice

Cita:
for (var i = 0; i < color.length; i++) {
(function(i) {
$("#modules-colors-nav-"+i).click(function(event){
$("#nav").css({ 'background', color[i]});
});
})(i);
}
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #4 (permalink)  
Antiguo 01/10/2013, 14:07
 
Fecha de Ingreso: julio-2013
Mensajes: 158
Antigüedad: 10 años, 9 meses
Puntos: 6
Respuesta: Problema con bucle for

Les comento lo hice como me lo sugirieron pero se adelanta un color es decir si hago click en #modules-colors-nav-1 me da el color en el array 2 si doy click en #modules-colors-nav-2 me da el color en el array 3

Aqui el codigo:

Cita:
var colors=new Array('#AC193D', '#D24726', '#FF8F32', '#930', '#82BA00', '#008A17', '#004B8B', '#0072C6', '#5DB2FF', '#008299', '#03B3B2', '#8C0095', '#DC4FAD', '#000000', '#585858', '#001940', '#030', '#036');

for (x=0; x<=colors.length; x++) {

(function (x) {

$("#modules-colors-nav-"+x).click(function(event){
$("#nav").css({ background: colors[x] });
});

})(x);

};
  #5 (permalink)  
Antiguo 01/10/2013, 14:16
 
Fecha de Ingreso: julio-2013
Mensajes: 158
Antigüedad: 10 años, 9 meses
Puntos: 6
Respuesta: Problema con bucle for

ya lo solucione gracias el problema estaba enque el primer color para referenciarlo en el array es colors[0] y el ciclo empezaba en 1 es decir empesaba colors[1], colors[2] etc.. por lo que saltaba el primer color la solucion fue agregar un campo vacio en primer lugar.

Etiquetas: bucle, funcion, jquery
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:12.