Foros del Web » Programando para Internet » Javascript »

¿Esto es demasiado codigo para algo tan simple?

Estas en el tema de ¿Esto es demasiado codigo para algo tan simple? en el foro de Javascript en Foros del Web. Hola, pues con este codigo cambio el valor, estilo y la propiedad disabled de algunos campos... lo que me gustaria saber es si uso demasiadas ...
  #1 (permalink)  
Antiguo 04/07/2007, 15:54
 
Fecha de Ingreso: septiembre-2005
Ubicación: Valencia
Mensajes: 738
Antigüedad: 18 años, 7 meses
Puntos: 5
Mensaje ¿Esto es demasiado codigo para algo tan simple?

Hola, pues con este codigo cambio el valor, estilo y la propiedad disabled de algunos campos... lo que me gustaria saber es si uso demasiadas lineas pero esque no se hacerlo de otra forma, bueno aqui os dejo el codigo:
Código:
	function CfgCampos(grupo)
	{
		document.formulario_principal.bloqueo.disabled= false;
		document.formulario_principal.bloqueo.className= "";
		document.formulario_principal.tipo.disabled= false;
	  document.formulario_principal.tipo.value= "escudo";
		document.formulario_principal.ataque.disabled= false;
		document.formulario_principal.ataque.className= "";
		document.formulario_principal.defensa_fisica.disabled= false;
		document.formulario_principal.defensa_fisica.className= "";
		document.formulario_principal.defensa_magica.disabled= false;
		document.formulario_principal.defensa_magica.className= "";
		//Tomable
		if (grupo== 2)
		{
    	document.formulario_principal.tipo.value= "ninguno"; 
			document.formulario_principal.tipo.disabled= true; 
			document.formulario_principal.bloqueo.value= ""; document.formulario_principal.bloqueo.disabled= true;
			document.formulario_principal.bloqueo.className= "bloqueado";
			document.formulario_principal.ataque.value= ""; document.formulario_principal.ataque.disabled= true;
			document.formulario_principal.ataque.className= "bloqueado";
			document.formulario_principal.defensa_fisica.value= ""; document.formulario_principal.defensa_fisica.disabled= true;
			document.formulario_principal.defensa_fisica.className= "bloqueado";
			document.formulario_principal.defensa_magica.value= ""; document.formulario_principal.defensa_magica.disabled= true;
			document.formulario_principal.defensa_magica.className= "bloqueado";
		}
	}
</script>
¿Se podria reducir? xD thx
  #2 (permalink)  
Antiguo 05/07/2007, 05:43
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: ¿Esto es demasiado codigo para algo tan simple?

Hola:

Se puede mejorar algo


Yo pondría algo así:


Código:
function CfgCampos(grupo)	{
	with	(document.formulario_principal)	{				bloqueo.disabled = (grupo == 2);
		bloqueo.className = (grupo == 1) ? "bloqueado" : "";
		tipo.disabled = (grupo == 2);
		tipo.value = (grupo == 2) ? "ninguno" : "escudo";
			...
	}
}
Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 05/07/2007, 07:49
 
Fecha de Ingreso: septiembre-2005
Ubicación: Valencia
Mensajes: 738
Antigüedad: 18 años, 7 meses
Puntos: 5
Re: ¿Esto es demasiado codigo para algo tan simple?

si pero eso seria para todos los campos del formulario =S, yo solo quiero modificar unoscuantos, habria que repetir eso poniendo los nombres de los campos no?= es decir nada no se puede xD
  #4 (permalink)  
Antiguo 05/07/2007, 19:45
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Re: ¿Esto es demasiado codigo para algo tan simple?

Pues no se me ha ocurrido nada, salvo que es menos óptimo hacer
document.formulario.campo.propiedad...;
mil veces; que hacer
variable = document.formulario.campo
variable.propiedad...;
mil veces

De lo de simplificar el código.. mi respuesta habría sido la misma que la de caricatos ... es más simple hacer eso que casi cualquier otra cosa.

Hombre, si quieres puedes hacerte una función que sea
cambiarProp(elemento, propiedad, valorNuevo)
Pero yo creo que no te merece la pena, y quedará menos legible, menos óptimo, y más recargado.



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.
  #5 (permalink)  
Antiguo 06/07/2007, 00:43
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: ¿Esto es demasiado codigo para algo tan simple?

Cita:
Iniciado por astut Ver Mensaje
si pero eso seria para todos los campos del formulario =S, ...
¡Noooo! Solo debes modificar los que quieres... si se tratase de todos los campos sería tan fácil como hacer un bucle.

La idea es en vez de referenciar toda la jerarahía del objeto, posicionarse en la más baja jerarquía común: with(document.formulario_principal), y por cada elemento que haya que darle un valor condicional ponerlo con ese formato... y los valores lógicos asignarlo directamente con el condicional: [elemento].disabled = (grupo == 2)...

La idea de derkenuke es una alternativa, pero la instrucción with me parece más adecuada (lamentablemente es una estructura muy poco usada)... ;pensando:

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 20:52.