Switch Case en Java Script

Espero que se encuentre muy bien saludos
El motivo por el cual le escribo es porque tengo una función que suma totales, el problema que tengo es que si por ejemplo solo quiero sumar los totales que capture en por text y no en todos no me lo hace, la pregunta es como hago esto con switch case par que dependiendo de los valores que tenga capturados me haga la suma total ya tengo este código quisiera saber si voy bien
function total()
 {
  valor1=parseFloat(document.getElementById('val4').value);
  valor2=parseFloat(document.getElementById('val7').value);
  valor3=parseFloat(document.getElementById('val10').value);
  valor4=parseFloat(document.getElementById('val13').value);
  valor5=parseFloat(document.getElementById('val16').value);
  valor6=parseFloat(document.getElementById('val19').value);
  valor7=parseFloat(document.getElementById('val22').value);
  valor8=parseFloat(document.getElementById('val25').value);
  valor9=parseFloat(document.getElementById('val28').value);
  valor10=parseFloat(document.getElementById('val31').value);
var opc="0";
switch(opc)
{
case "1":
document.getElementById('tot').value= valor1;
break;
case "2":
document.getElementById('tot').value= valor1+valo2;
break;
case "3":
document.getElementById('tot').value= valor1+valo2+valor3;
break;
case "4":
document.getElementById('tot').value= valor1+valo2+valor3+valor4;
break;
case "5":
document.getElementById('tot').value= valor1+valo2+valor3+valor4+valo5;
break;
case "6":
document.getElementById('tot').value= valor1+valo2+valor3+valor4+valor5+valor6;
break;
case "7":
document.getElementById('tot').value= valor1+valo2+valor3+valor4+valor5+valor6+valor7;
break;
case "8":
document.getElementById('tot').value= valor1+valo2+valor3+valor4+valor5+valor6+valor7+valor8;
break;
case "9":
document.getElementById('tot').value= valor1+valo2+valor3+valor4+valor5+valor6+valor7+valor8+valor9;
break;
case "10":
document.getElementById('tot').value= valor1+valo2+valor3+valor4+valor5+valor6+valor7+valor8+valor9+valor10;
break;
}
}   
con este boton llamo la funcion
<input type="text"  name="tot" size="15" id="tot" />
<input type="button" value="=" onClick="total()">

2 respuestas

Respuesta
1
Yo lo haría de un modo menos "artesanal", es decir, más dinámico, mediante un array:
function total() 
 {

var arrayValores = new Array(); 
  arrayValores[0]=parseFloat(document.getElementById('val4').value); 
  arrayValores[1]=parseFloat(document.getElementById('val7').value); 
  arrayValores[2]=parseFloat(document.getElementById('val10').value); 
  arrayValores[3]=parseFloat(document.getElementById('val13').value); 
  arrayValores[4]=parseFloat(document.getElementById('val16').value); 
  arrayValores[5]=parseFloat(document.getElementById('val19').value); 
  arrayValores[6]=parseFloat(document.getElementById('val22').value); 
  arrayValores[7]=parseFloat(document.getElementById('val25').value); 
  arrayValores[8]=parseFloat(document.getElementById('val28').value); 
  arrayValores[9]=parseFloat(document.getElementById('val31').value);

 
var opc=5; //Por ejemplo, para sumar las cinco primeras posiciones

var suma= 0;
for (i=0; i<opc; i++){
suma += arrayValores;

document.getElementById('tot').value= suma;
¿Ok amigo muchas gracias solo que en el tot me muestra los valores que voy a sumar en lugar del total de la suma por que?
Saludos
Atentamente
Jorge sánchez
Siempre se me olvida que el editor de todoexpertos elimina la secuencia de caracteres "corchete"+"i" + "corchete", por lo que la lía parda en los bucles for. Reescribo el bucle para que no haya errores:
for (ix=0; i<opc[ix]; ix++){ 
suma += arrayValores[ix]; 
}
Ok amigo muchas gracias pero que cree , ahora no me calcula nada asi quedo el codigo despues de la correccion
function total() 
 {
var arrayValores = new Array(); 
  arrayValores[0]=parseFloat(document.getElementById('val4').value); 
  arrayValores[1]=parseFloat(document.getElementById('val7').value); 
  arrayValores[2]=parseFloat(document.getElementById('val10').value); 
  arrayValores[3]=parseFloat(document.getElementById('val13').value); 
  arrayValores[4]=parseFloat(document.getElementById('val16').value); 
  arrayValores[5]=parseFloat(document.getElementById('val19').value); 
  arrayValores[6]=parseFloat(document.getElementById('val22').value); 
  arrayValores[7]=parseFloat(document.getElementById('val25').value); 
  arrayValores[8]=parseFloat(document.getElementById('val28').value); 
  arrayValores[9]=parseFloat(document.getElementById('val31').value);
var opc;   // Hay algun problema si no le pongo = a x  numero
var suma=0;
for (ix=0; ix<opc[ix]; ix++){ 
suma += arrayValores[ix]; 
}
document.getElementById('tot').value= suma;
}                                                           
</script>
Saludos y gracias
Atentamente
Jorge Sanchez
function total()  
 { 
var arrayValores = new Array();  
  arrayValores[0]=parseFloat(document.getElementById('val4').value);  
  arrayValores[1]=parseFloat(document.getElementById('val7').value);  
  arrayValores[2]=parseFloat(document.getElementById('val10').value);  
  arrayValores[3]=parseFloat(document.getElementById('val13').value);  
  arrayValores[4]=parseFloat(document.getElementById('val16').value);  
  arrayValores[5]=parseFloat(document.getElementById('val19').value);  
  arrayValores[6]=parseFloat(document.getElementById('val22').value);  
  arrayValores[7]=parseFloat(document.getElementById('val25').value);  
  arrayValores[8]=parseFloat(document.getElementById('val28').value);  
  arrayValores[9]=parseFloat(document.getElementById('val31').value); 
var suma=0; 
for (ix=0; ix<
arrayValores[ix]; ix++){  
suma += arrayValores[ix];  

document.getElementById('tot').value= suma; 
}
MUchas Gracias amigo, disculpe las molestias ahora me da 0 en las sumas es decir que tenga los valores que tenga en las array siempre la suma da 0
Saludos y Gracias
Atentamente
Jorge Sánchez
Disculpe amigo ya quedo solo que yo tenia un error de dedo, una ultima pregunta puedo agregar todos los elementos que quiera al array
arrayValores[9]
Si este llega a 9 puedo hacer que llegue hasta 20,30, etc
Saludos y gracias
Efectivamente, podrías añadir todos los elementos que quieras al array.
Respuesta
1
Te dejo un código que me parece más sencillo. Lo he probado y me funciona. Espero que te sirva. En tu código veo un problema y es que opc siempre es 0 (o me lo parece a mi). De todas formas este código es más genérico. Ya me contarás:
<html>
<head>
<title></title>
</head>
<script type="text/javascript">
function total()
 {
  var elementos = document.form.elements.length;
  //alert(elementos);
     var total = 0;
     var valor;
  for(i=0; i<elementos; i++){
     if ((document.form.elements.type == "text") && (document.form.elements.name != "tot"))
     {
         valor = parseFloat( document.form.elements.value );
         if( !isNaN(valor) )
            total += valor;
     }
  }
  document.getElementById('tot').value = total;
}   
</script>
<body>
<form ENCTYPE="multipart/form-data" METHOD="post" name="form">
<input name="txt_1" type="text" value="" />
<br>
<input name="txt_2" type="text" value="" />
<br>
<input name="txt_3" type="text" value="" />
<br>
<input name="txt_4" type="text" value="" />
<br>
<input name="txt_5" type="text" value="" />
<br>
<input name="txt_6" type="text" value="" />
<br>
<input name="txt_7" type="text" value="" />
<br>
<input name="txt_8" type="text" value="" />
<br>
<input name="txt_9" type="text" value="" />
<br>
<label>Total: </label>
<input type="text"  name="tot" size="15" id="tot" />
<input type="button" value="=" onClick="total()">  
</form>
</body>
</html>
¿Muchas gracias ya lo cheque pero cuando le doy que sume los valores introducidos me manda siempre como resultado 0 porque?
Saludos y gracias
Pues la verdad es que a mi me funciona por lo que no sabría decirte que puede fallar si lo tienes exactamente igual.
Prueba es diferentes navegadores. Es posible que alguna de las funciones utilizadas no las reconozca el navegador que utilizas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas