Foros del Web » Programando para Internet » Javascript »

Funcion que me tiene loco, ya no sé qué hacer...

Estas en el tema de Funcion que me tiene loco, ya no sé qué hacer... en el foro de Javascript en Foros del Web. Ayuda, esta funcion ya me tiene loco y no se que hacer. function crea_tabla(){ for (var a=0;a<3;a++){ for (var b=0;b<3;b++){ for(i=0; i<2; i++){ posicion=((nombres2[i] * ...
  #1 (permalink)  
Antiguo 30/03/2010, 09:00
 
Fecha de Ingreso: febrero-2008
Mensajes: 77
Antigüedad: 16 años, 9 meses
Puntos: 0
Funcion que me tiene loco, ya no sé qué hacer...

Ayuda, esta funcion ya me tiene loco y no se que hacer.

function crea_tabla(){
for (var a=0;a<3;a++){
for (var b=0;b<3;b++){
for(i=0; i<2; i++){
posicion=((nombres2[i] * nombres3[i])-1); //nombres2[i] y nombres3[i] con unos arreglos los que contienen numeros y hace una multiplicacion y le resta uno para saber en que posicion del arreglo debiera dejar el valor nombre.
nombre=nombres[i];
if((a*3+b)==posicion){
document.write(nombre);
}else{
document.write(a*3+b);
}

}
}
}
}

me da esto como resultado:
0011223EEE44556677TTT8
cuando debiea ser:
012EEE4567TTT;
esto lo controla el for:
for(i=0; i<2; i++){; lo saco o le pongo uno, pero pierdo los dos valores.
Gracias
  #2 (permalink)  
Antiguo 30/03/2010, 14:59
 
Fecha de Ingreso: marzo-2010
Mensajes: 18
Antigüedad: 14 años, 8 meses
Puntos: 2
Respuesta: Funcion que me tiene loco, ya no sé qué hacer...

Ojo con meter un for dentro de otro. Así como lo tienes, todo el código que hay dentros de los 3 fors se repetirá 3 * 3 * 2 veces, lo que hace un total de 18 veces. Por lo tanto, si cada vez que se ejecuta ese código se escribe algo (como está indicado con el if y el else), es imposible que te de como resultado 012EEE4567TTT (12 caracteres). No se si habrá más fallos, porque el resultado que te sale tampoco tiene 18 caracteres, así que quizás habría que mirar también donde se modifica el valor del vector nombres[i].

No se si me he explicado bien :P. Explica con un poco más de detalle lo que quieres hacer, y pon el código entero (si no es muy largo).

Suerte con la función y saludos!
  #3 (permalink)  
Antiguo 31/03/2010, 18:47
Avatar de Tecna  
Fecha de Ingreso: enero-2010
Mensajes: 291
Antigüedad: 14 años, 11 meses
Puntos: 45
Respuesta: Funcion que me tiene loco, ya no sé qué hacer...

Buenas,

como ya te dije en otro mensaje, el código lo tienes casi listo pero la principal dificultad que te está complicando es usar document.write. Para un caso sencillo en el que no necesitaras el tercer for podría funcionar, pero al necesitar el tercer for ya no funcionará porque los elementos los tienes que crear fuera del tercer for para que sean sólo 9 como quieres y no 18 que es lo que pasa si lo haces dentro (*) y una vez creado ejecutarías el tercer for recorriendo el array de posiciones, si como parece lo necesitas para conocer la posición y el nombre y entonces el resultado ya no sería el esperado porque cada document.write añade contenido al documento a continuación de lo que ya existe, es decir de los elementos que ya se habrán creado, por lo que si no puedes incluir el contenido al crear el elemento no funcionará. Es un claro ejemplo de por qué no es conveniente usar document.write. Si lo pones en un fichero externo y ejecutas la funcion al cargar el documento si funcionaría porque podrías modificar el contenido de las celdas después de crearlas.

Sigo pensando que si nombres2 y nombres3 contienen números no deberían llamarse nombres. Y seguramente con un array sería suficiente, pero eso ya sería otro tema.

(*) En el ejemplo que puso EEE sustituye a 3 y TTT sustituye a 8 con lo que:
0011223EEE44556677TTT8 son 18 elementos
012EEE4567TTT son 9 elementos

Etiquetas: funcion, loco
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 15:36.