Ver Mensaje Individual
  #8 (permalink)  
Antiguo 03/09/2010, 17:10
Avatar de Alun
Alun
 
Fecha de Ingreso: diciembre-2009
Ubicación: Liverpool
Mensajes: 140
Antigüedad: 14 años, 4 meses
Puntos: 4
Respuesta: No se me ejecutan los bucles FOR

Creo que ahora he pillado bien el concepto de la explicación: la idea es asegurarse de que el bucle analiza exactamente el número de objetos que hay, no más ni menos, de ahí que haya que pasarle la referencia del número de objetos en lugar del número de objetos que se cree que hay. ¿Es así?

A decir verdad, el código que posteé en este hilo era para analizar unos radio buttons, en los que se preguntaba el sexo (solamente dos, hombre o mujer), por eso puse i==1 (....sexo[0] y ....sexo[1]). En cualquier caso, con la referencia del número de objetos funcina mejor que con el número de objetos directamente.

Ahora, aplicando tu explicación tal y como la he entendido, he pasado al bucle en el que se crea un número N de campos, de esta manera:

Código Javascript:
Ver original
  1. var tracks=parseInt(prompt('¿Cuántas pistas tiene el disco?'));
  2. if(!parseInt(tracks))
  3. {
  4.  alert('En números, por favor');
  5.  newTrack();
  6. }
  7. else if(parseInt(tracks)&&tracks > 30)
  8. {
  9.  alert('30 es un buen número para las canciones. Si el disco tiene más, pon las 30 primeras');
  10.  newTrack();
  11. }
  12. else //A partir de aquí es donde aparecen los errores
  13. {
  14.  alert('este alert salta');
  15.  for(var w=1;w == tracks; w++)
  16.  {
  17.   alert('este alert NO salta, y tampoco se ejecuta la orden de abajo');
  18.   document.getElementById('tracklist').innerHTML='<input type="text" name="track'+w+"\"><br>\n";
  19.  }
  20. alert('Este alert salta');
  21. }

La lógica: dado un número N, facilitado por el usuario, crea campos input, comenzando con w=0, y hasta que w==N.

En este caso, lo mismo, el bucle no se ejecuta. Creo que esta vez si es apropiado dar un valor numérico como condición, ¿no? Así, está (o debería estar) creando campos hasta que el usuario decida que pare.