Problemas con bucle for

Merry
26 de Diciembre del 2004
Hola a todos, mi problema es el siguiente:

Estoy diseñando un formulario con unos botones que al ser pulsados activen y desactiven campos según proceda, es algo así:

function ActivaEmail(){
var a = document.forms[0];
a.Email.disabled = false;
a.Email.style.backgroundColor="white";
a.Direccion.disabled = true;
a.Direccion.style.backgroundColor="#ededed";
a.CodigoPostal.disabled = true;
a.CodigoPostal.style.backgroundColor="#ededed";
a.Ciudad.disabled = true;
a.Ciudad.style.backgroundColor="#ededed";
a.Provincia.disabled = true;
a.Provincia.style.backgroundColor="#ededed";
a.Telefono1.disabled = true;
a.Telefono1.style.backgroundColor="#ededed";
a.Telefono2.disabled = true;
a.Telefono2.style.backgroundColor="#ededed";
a.HoraContacto1.disabled = true;
a.HoraContacto1.style.backgroundColor="#ededed";
a.HoraContacto2.disabled = true;
a.HoraContacto2.style.backgroundColor="#ededed";
a.Fax.disabled = true;
a.Fax.style.backgroundColor="#ededed";
}

Dado que tengo bastantes funciones de este tipo creo que sería bien poder meter los campos a activar y/o desactivar y los cambios de color en arrays y hacer un bucle similar a esto:
for (i=4,i<dis,i++){
var dis = new Array("Email","Direccion","CodigoPostal","Ciudad");
a.dis[i].disabled = false;}

El problema es que no soy capaz de dar con la sintaxis correcta del bucle ¿alguna ayuda? Muchísimas gracias.

Jorge
26 de Diciembre del 2004
La idea que que tenias era correcta pero como bien dices tienes algunos errores de sintaxis.

La forma correcta es algo asi:

for (i=0;i<elementos.length;i++) {
var a = eval("document.forms[0]."+elementos[i]);
a.disabled = false;
a.style.backgroundColor="white";
}


Te he puesto una pagina de ejemplo con lo que creo que quieres hacer en:
http://myheels.webcindario.com/consult/171726/171726.htm
Puedes copiar el codigo de alli.



merry
26 de Diciembre del 2004
Funciona perfectamente, he conseguido reducir bastante el tamaño de los archivo de JS. Muchas gracias por tu ayuda.