Foros del Web » Programando para Internet » Javascript »

for in como alternativa.

Estas en el tema de for in como alternativa. en el foro de Javascript en Foros del Web. Como puedo recorrer los elementos de un formulario con la estructura for in en vez de utilizar otro bucle. por ejemplo: var elementos = document.forms[0].elements; ...
  #1 (permalink)  
Antiguo 20/06/2007, 02:27
 
Fecha de Ingreso: agosto-2006
Ubicación: Cuba
Mensajes: 23
Antigüedad: 17 años, 9 meses
Puntos: 0
Pregunta for in como alternativa.

Como puedo recorrer los elementos de un formulario con la estructura for in en vez de utilizar otro bucle.

por ejemplo:

var elementos = document.forms[0].elements;

for(i=0;i<elementos.length;i++)
alert(elementos[i].value);



en vez de recorrerlo con esa estructura quiero hacerlo con la opcion del for in.

si alguien sabe se lo agradeceria.

salu2os:
yosvany
  #2 (permalink)  
Antiguo 20/06/2007, 02:45
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 1 mes
Puntos: 1284
Re: for in como alternativa.

Hola:

Lo malo de ese bucle es que también lee atributos como length, así que puedes tener problemas ...

var elementos = document.forms[0].elements;

for(i in elementos)
if (i != "length")
alert(elementos[i].value);

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 20/06/2007, 09:34
 
Fecha de Ingreso: septiembre-2005
Mensajes: 1.289
Antigüedad: 18 años, 7 meses
Puntos: 3
Re: for in como alternativa.

que es un FOR IN, en que casos se usa o que diferencia tiene con respecto al for normal?
__________________
Wow! No se que decir...
  #4 (permalink)  
Antiguo 20/06/2007, 10:19
Avatar de MaBoRaK  
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 2.003
Antigüedad: 21 años
Puntos: 35
Re: for in como alternativa.

loading.............


es como un foreach

te simplifica el

Código PHP:
for (var i=0;i<algo.length;i++)
{


a tan solo

Código PHP:
for (var i in algo)
{
  

pero WARNING. si usan un foreach en un Array u Objeto que tenga propiedades embedidas con Object.prototype.bla || Array.prototype.bla ... usen siempre

Código PHP:
if(obj.propertyIsEnumerable(i))
{
  

connection closed.
__________________

Maborak Technologies
  #5 (permalink)  
Antiguo 20/06/2007, 11:23
 
Fecha de Ingreso: septiembre-2005
Mensajes: 1.289
Antigüedad: 18 años, 7 meses
Puntos: 3
Re: for in como alternativa.

Orales, muchas gracias por la respuesta!!
__________________
Wow! No se que decir...
  #6 (permalink)  
Antiguo 20/06/2007, 12:17
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 7 meses
Puntos: 45
Re: for in como alternativa.

zyon por favor, para esas dudas básicas utiliza mejor un buscador. No todas tus preocupaciones se pueden preguntar a los usuarios del foro.


Un saludo.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #7 (permalink)  
Antiguo 20/06/2007, 12:33
 
Fecha de Ingreso: septiembre-2005
Mensajes: 1.289
Antigüedad: 18 años, 7 meses
Puntos: 3
Re: for in como alternativa.

esta bien, solo que la mayoria de las veces entiendo mas facilemente las explicaciones que ustedes me dan que las que encuentro en un buscador, por eso lo hago...no creas que no busco, a veces se me van detalles y con sus xplicaciones me guio mejor...
__________________
Wow! No se que decir...
  #8 (permalink)  
Antiguo 20/06/2007, 22:12
 
Fecha de Ingreso: agosto-2006
Ubicación: Cuba
Mensajes: 23
Antigüedad: 17 años, 9 meses
Puntos: 0
Sonrisa Re: for in como alternativa.

Hola.

Gracias por responderme,entendi lo que dijiste;tengo entendido que el arreglo elements guarda todos los campos asociados a un formulario, que son objetos.No habra alguna forma de recorrer ese arreglo diciendole que me interesan solamente esos objetos,en especial sus propiedades solamente?.

Es decir acceder a todas las propiedades como si de un foreach de PHP se tratara.

gracias,nuevamente.

salu2s:
yosvany.
  #9 (permalink)  
Antiguo 21/06/2007, 01:02
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 1 mes
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
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:44.