Ver Mensaje Individual
  #1 (permalink)  
Antiguo 02/09/2010, 07:10
Avatar de Alun
Alun
 
Fecha de Ingreso: diciembre-2009
Ubicación: Liverpool
Mensajes: 140
Antigüedad: 14 años, 11 meses
Puntos: 4
Comprobar un número indefinido de campos

Hola a todos:

He creado un formulario para actualizar una BD con discos de música. Cada disco de entre todos los que hay en el mundo tiene un número distinto de pistas, por lo que he decidido crear un primero input para la primera pista, y luego, un botón que añada un nuevo input para cada pista que se desee poner.

Los campos imput tienen una id="track1", "track2", "trackn".

El código del formulario:
Código HTML:
Ver original
  1. <tr>
  2.  <td>Tracklist:</td>
  3.  <td id="tracklist">
  4.   <input type="text" name="track1" id="track1"><br>
  5.  </td>
  6. </tr>
  7. <input type="button" onClick="newTrack();" value="Añade otra canción"><br>

La función que añade campos input:
Código Javascript:
Ver original
  1. var control=1;
  2. function newTrack()
  3. {
  4.  var nums=(2,3,4,5,6,7,8,9);
  5.  var objeto=document.getElementById('tracklist');
  6.  objeto.innerHTML+='<input type="text" name="track"'+nums[control]+'"><br>'+"\n";
  7.  control++;
  8. }

La función que los comprueba:
Código Javascript:
Ver original
  1. if(document.getElementById('tracklist').value=='')
  2. {
  3.  alert('Jo, tio, ponme al menos una canción en el disco');
  4.  return false;
  5. }
  6. else
  7. {
  8.  var obj = document.getElementById('tracklist').childNodes;
  9.  var u;
  10.  //El alert comentado lo puse para comprobar si podía acceder a los childNodes.
  11.  //Solo puedo acceder al primero del array, incluso después de haber creado más
  12.  //alert(document.getElementById('tracklist').childNodes[0].name);
  13.  for(u==1;u < obj;u++)
  14.  {
  15.   //Este alert es para comprobar que se puede acceder a los childNodes
  16.   //La finalidad de la función es comprobar con un IF si su valor es una cadena vacía.
  17.   alert(document.getElementById('tracklist').childNodes[u].name);
  18.  }
  19. }

El problema: Solo puedo acceder al primer nodo, aun habiendo creado más con la función newTrack(); .

¿No puedo acceder a ellos porque no están creados en el momento de cargar la página, o es un error en alguna función? Y, en el caso de sí poder acceder a ellos, ¿cómo puedo hacerlo?

Muchas gracias.