Foros del Web » Programando para Internet » Javascript »

Consulta de como mejorar mi funcion javascript

Estas en el tema de Consulta de como mejorar mi funcion javascript en el foro de Javascript en Foros del Web. Hola, tengo una consulta tengo una funcion javascript que me activa y desactiva un grupo de combos por medio de un checkbox, solo que el ...
  #1 (permalink)  
Antiguo 15/11/2012, 13:50
Avatar de Sumerio  
Fecha de Ingreso: octubre-2009
Mensajes: 195
Antigüedad: 14 años, 6 meses
Puntos: 6
Pregunta Consulta de como mejorar mi funcion javascript

Hola, tengo una consulta tengo una funcion javascript que me activa y desactiva un grupo de combos por medio de un checkbox, solo que el punto es que quiero generalizarlo, para traer el id de cada combo y checkbox por cada activacion y no por todo como se muestra en mi funcion javascript, el punto principal es que me tiene que funcionar el window.onload para me cargue la funcion al cargarse la pagina, les muestro mi codigo:

Código:
function activarCombos() {
		
		var f = document.forms[0];
		
		var chkMena = document.getElementById("menaChk");			
		var cbxMena1 = document.getElementById("mineralMena1");
		var cbxMena2 = document.getElementById("mineralMena2");
		var cbxMena3 = document.getElementById("mineralMena3");
		var cbxMena4 = document.getElementById("mineralMena4");
		
		var chkGan = document.getElementById("mnGanChk");			
		var cbxGanga1 = document.getElementById("mineralGanga1");
		var cbxGanga2 = document.getElementById("mineralGanga2");
		var cbxGanga3 = document.getElementById("mineralGanga3");
		var cbxGanga4 = document.getElementById("mineralGanga4");
		
		var chkCaj = document.getElementById("mnCaChk");			
		var cbxRoca1 = document.getElementById("mineralRoca1");
		var cbxRoca2 = document.getElementById("mineralRoca2");
		var cbxRoca3 = document.getElementById("mineralRoca3");
		var cbxRoca4 = document.getElementById("mineralRoca4");
		
		var chkMin = document.getElementById("mineralNoChk");			
		var cbxMin1 = document.getElementById("mineralNoMin1");
		var cbxMin2 = document.getElementById("mineralNoMin2");
		var cbxMin3 = document.getElementById("mineralNoMin3");
		var cbxMin4 = document.getElementById("mineralNoMin4");
		
		var chkNoGan = document.getElementById("mnNoGanChk");			
		var cbxNoGanga1 = document.getElementById("mineralNoGanga1");
		var cbxNoGanga2 = document.getElementById("mineralNoGanga2");
		var cbxNoGanga3 = document.getElementById("mineralNoGanga3");
		var cbxNoGanga4 = document.getElementById("mineralNoGanga4");
		
		var chkNoCaj = document.getElementById("mnNoCaChk");			
		var cbxNoRoca1 = document.getElementById("mineralNoRoca1");
		var cbxNoRoca2 = document.getElementById("mineralNoRoca2");
		var cbxNoRoca3 = document.getElementById("mineralNoRoca3");
		var cbxNoRoca4 = document.getElementById("mineralNoRoca4");
				
		
		if (chkMena.checked) {
			cbxMena1.disabled = false;
			cbxMena2.disabled = false;
			cbxMena3.disabled = false;
			cbxMena4.disabled = false;			
		}else{	
			cbxMena1.disabled = true;
			cbxMena2.disabled = true;
			cbxMena3.disabled = true;
			cbxMena4.disabled = true;						
		}
		
		if (chkGan.checked) {		
			cbxGanga1.disabled = false;
			cbxGanga2.disabled = false;
			cbxGanga3.disabled = false;
			cbxGanga4.disabled = false;			
		}else{			
			cbxGanga1.disabled = true;
			cbxGanga2.disabled = true;
			cbxGanga3.disabled = true;
			cbxGanga4.disabled = true;
		}
		
		if (chkCaj.checked) {		
			cbxRoca1.disabled = false;
			cbxRoca2.disabled = false;
			cbxRoca3.disabled = false;
			cbxRoca4.disabled = false;			
		}else{			
			cbxRoca1.disabled = true;
			cbxRoca2.disabled = true;
			cbxRoca3.disabled = true;
			cbxRoca4.disabled = true;						
		}
		
		if (chkMin.checked) {
			cbxMin1.disabled = false;
			cbxMin2.disabled = false;
			cbxMin3.disabled = false;
			cbxMin4.disabled = false;			
		}else{	
			cbxMin1.disabled = true;
			cbxMin2.disabled = true;
			cbxMin3.disabled = true;
			cbxMin4.disabled = true;						
		}
		
		if (chkNoGan.checked) {		
			cbxNoGanga1.disabled = false;
			cbxNoGanga2.disabled = false;
			cbxNoGanga3.disabled = false;
			cbxNoGanga4.disabled = false;			
		}else{			
			cbxNoGanga1.disabled = true;
			cbxNoGanga2.disabled = true;
			cbxNoGanga3.disabled = true;
			cbxNoGanga4.disabled = true;						
		}
		
		if (chkNoCaj.checked) {		
			cbxNoRoca1.disabled = false;
			cbxNoRoca2.disabled = false;
			cbxNoRoca3.disabled = false;
			cbxNoRoca4.disabled = false;			
		}else{			
			cbxNoRoca1.disabled = true;
			cbxNoRoca2.disabled = true;
			cbxNoRoca3.disabled = true;
			cbxNoRoca4.disabled = true;						
		}
		
	}
	
			
	 window.onload = function(){     	
     	
		 activarCheckbox();
		 activarCombos();	
		 //activarRadios2();
		 //activarRadios3();
		 //activarRadios4();
     	 
     }
Espero sus comentarios
  #2 (permalink)  
Antiguo 15/11/2012, 23:33
Avatar de Albuss  
Fecha de Ingreso: enero-2012
Ubicación: Coruña
Mensajes: 475
Antigüedad: 12 años, 2 meses
Puntos: 30
Respuesta: Consulta de como mejorar mi funcion javascript

Sugerencia , ¿quizas usar un bucle for y un indice? sabiendo que metes en un array todos los ids que tengas.

Es mejor que utilizar todos los ids de una vez.
  #3 (permalink)  
Antiguo 16/11/2012, 07:13
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 9 meses
Puntos: 1567
Respuesta: Consulta de como mejorar mi funcion javascript

Y la función activarCheckbox();, que hace?
Como estás recuperando los values por defecto al cargar la página?
deduzco que las variables que inician con cbx corresponden a los checboxes, pero no estoy seguro a que corresponden las que inician con chk
Te sugeriría que expongas el html generado en forma completa.

SAludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.

Etiquetas: funcion, mejorar
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 04:40.