Ver Mensaje Individual
  #9 (permalink)  
Antiguo 21/06/2007, 01:02
Avatar de caricatos
caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 2 meses
Puntos: 1284
Re: for in como alternativa.

Hola:

Justamente este tipo de bucle está orientado a objetos, y los arrays son una variante de objeto, con la característica de que tiene como objetos asociados elementos enumerados, y un atributo especial llamado length (cosa que ya debes saber)

O sea que si quieres solo los objetos vas a tener un problema asociado, ya que se repiten... por ejemplo, si tu primer control del formulario (document.forms.miForm[0]) tiene el atributo name="ejemplo", al recorrer asociativamente el formulario te encontrarás con:
document.forms.miForm[0] o document.forms.miForm["ejemplo"] (y la forma de referenciar varía entre los navegadores)

En resúmen, si quieres obtener los controles de un formulario recorriéndolos con ese bucle, por cada elemento que accedas, tienes que comprobar que sea un control, por ejemplo preguntando por el nombre, o el tagName... simplemente es un sistema mucho más complejo...

Una alternativa que yo suelo usar para recorrer los campos que yo quiero, es tener esos nombre en un array aparte.

var controles = ["nombre", "domicilio", "telefono"];
for (var i = 0, total = controles.length; i < total; i ++)
checkear(document.forms.miForm[controles[i]])

Para que veas la estructura DOM de los elementos de una página web, puedes recorrer los de esta página: Nuevo destripador

... y por cierto, fíjate en mi firma...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo