Foros del Web » Programando para Internet » Javascript »

cálculos aritméticos y arrays

Estas en el tema de cálculos aritméticos y arrays en el foro de Javascript en Foros del Web. Hola a todos, les explico... tengo que calcular unos precios sobre unos cursos y unos alojamientos, a partir de un formulario html y por medio ...
  #1 (permalink)  
Antiguo 30/04/2011, 06:10
 
Fecha de Ingreso: mayo-2005
Mensajes: 92
Antigüedad: 19 años
Puntos: 2
cálculos aritméticos y arrays

Hola a todos, les explico... tengo que calcular unos precios sobre unos cursos y unos alojamientos, a partir de un formulario html y por medio de unos select...

Puede haber dos tipos de curso (básico o intensivo) y dos tipos de alojamiento (individual o compartido). A su vez, dependiendo si es temporada alta, media o baja, los precios pueden variar. Es decir yo puedo elegir curso básico y alojamiento individual, y si selecciono temporada baja aparece un precio, si selecciono temporada media otro precio distinto y si selecciono temporada alta otro distinto. Y así con todas las posibilidades que hay en los select

He montado un javascript a partir de documentación que he visto por la web pero me he quedado un poco atascado y necesitaría un poco de ayuda...
No sé si recupero bien los valores de los selects y me lio un poco con el tema de las comillas ("), que no se si tienen que ser simples o dobles.
También me gustaría saber como paso el resultado de la variable precioTotal al campo de texto con name Total..

Éste es el código, muchas gracias de antemano:

El formulario html

Código HTML:
<form method="post" name="formReserva" id="userForm" enctype="multipart/form-data">  
  
curso  
<select name="curso"  id="curso">
<option  value="basico">Curso Básico</option>
<option  value="intensivo">Curso Intensivo</option>
</select>  
  
alojamiento  
<select name="alojamiento"  id="alojamiento">
<option  value="compartido">compartido</option>
<option  value="individual">individual</option>
<option  value="sinalojamiento">sin alojamiento</option>
</select>  
  
  
semanas  
<input type="text" value="" size="20"  name="semanas" id="field3" />  
  
temporada  
<select name="temporada"  id="temporada">
<option  value="baja">Enero-Junio</option>
<option  value="media">Junio-Octubre</option>
<option  value="alta">Octubre-Diciembre</option>
</select>  
  
  
  
<input type="button" value="Calculate" name="form[Calculate]" id="Calculate" onclick="calcula();" />  
  
<input type="text" value="" size="20"  name="Total" id="Total" readonly="readonly"/>  
  
</form> 
el javascript

Código Javascript:
Ver original
  1. <script language="javascript">  
  2.  
  3. function calcula(){  
  4.  
  5. var preciosCurso = 0;  
  6. var preciosAlojamiento = 0;  
  7.  
  8. if(formReserva.curso.value == "basico"){  
  9.    var tipoCurso = "cursoBasico";  
  10. }else{  
  11.    var tipoCurso = "cursoIntensivo";  
  12. }  
  13.  
  14. if(tipoCurso = "cursoBasico"){  
  15.    var preciosCurso = [10,20,30];  
  16.    } else {  
  17.    var preciosCurso = [40,50,60];  
  18.    }  
  19.  
  20.  
  21. if(formReserva.alojamiento.value == "compartido"){  
  22.    var tipoAlojamiento = "alojamientoCompartido";  
  23. }else if(formularioI.field2.value == "individual"){  
  24.    var tipoAlojamiento = "alojamientoIndividual";  
  25. }  
  26.      
  27. if(tipoAlojamiento = "alojamientoCompartido"){  
  28.    var preciosAlojamiento = [10,20,30];  
  29.    } else if(tipoAlojamiento = "alojamientoIndividual") {  
  30.    var preciosAlojamiento = [40,50,60];  
  31.    }else{  
  32.    var preciosAlojamiento = 0;    
  33.       }    
  34.  
  35. var semanas=document.getElementById('semanas');  
  36.  
  37. if(formReserva.temporada.value == "baja"){  
  38.    var precioCurso = preciosCurso[0];  
  39.    var precioAlojamiento = preciosAlojamiento[0];  
  40.    }else if(formReserva.temporada.value == "media"){  
  41.    var precioCurso = preciosCurso[1];  
  42.    var precioAlojamiento = preciosAlojamiento[1];  
  43.    }else{  
  44.    var precioCurso = preciosCurso[2];  
  45.    var precioAlojamiento = preciosAlojamiento[2];  
  46.    }  
  47.  
  48. var precioTotal = (precioCurso+precioAlojamiento)*semanas;  
  49. }  
  50.  
  51. </script>



Muchas a gracias todos
  #2 (permalink)  
Antiguo 30/04/2011, 08:38
 
Fecha de Ingreso: mayo-2005
Mensajes: 92
Antigüedad: 19 años
Puntos: 2
Respuesta: cálculos aritméticos y arrays

Hola de nuevo, he hecho algunos cambios en el código intentando resolver el problema... Pero lo único que consigo es que la caja de texto me muestre "NaN"

Sabrían decirme en que estoy fallando??? Éste cálculo no es tan complicado, verdad??

Éste es el código javascript que tengo ahora....
Código Javascript:
Ver original
  1. <script language="javascript">  
  2.  
  3. function calcula(){  
  4.    
  5.  
  6. if(document.formReserva.curso.value == "basico"){  
  7.    var tipoCurso = "cursoBasico";  
  8. }else{  
  9.    var tipoCurso = "cursoIntensivo";  
  10. }  
  11.  
  12. if(tipoCurso = "cursoBasico"){  
  13.    var preciosCurso = [10,20,30];  
  14.    } else {  
  15.    var preciosCurso = [40,50,60];  
  16.    }  
  17.  
  18.  
  19. if(document.formReserva.alojamiento.value == "compartido"){  
  20.    var tipoAlojamiento = "alojamientoCompartido";  
  21. }else if(document.formReserva.alojamiento.value == "individual"){  
  22.    var tipoAlojamiento = "alojamientoIndividual";  
  23. }  
  24.      
  25. if(tipoAlojamiento = "alojamientoCompartido"){  
  26.    var preciosAlojamiento = [10,20,30];  
  27.    } else if(tipoAlojamiento = "alojamientoIndividual") {  
  28.    var preciosAlojamiento = [40,50,60];  
  29.    }else{  
  30.    var preciosAlojamiento = 0;    
  31.       }    
  32.  
  33. var semanas=document.getElementById("semanas");  
  34.  
  35. if(document.formReserva.temporada.value == "baja"){  
  36.    var precioCurso = preciosCurso[0];  
  37.    var precioAlojamiento = preciosAlojamiento[0];  
  38.    }else if(document.formReserva.temporada.value == "media"){  
  39.    var precioCurso = preciosCurso[1];  
  40.    var precioAlojamiento = preciosAlojamiento[1];  
  41.    }else{  
  42.    var precioCurso = preciosCurso[2];  
  43.    var precioAlojamiento = preciosAlojamiento[2];  
  44.    }  
  45.  
  46. var precioTotal = (precioCurso+precioAlojamiento)*semanas;
  47.  
  48. document.formReserva.total.value = precioTotal;
  49. }  
  50.  
  51. </script>

y el formulario es este (he cambiado algún id)

Código HTML:
<form method="post" name="formReserva" id="userForm" enctype="multipart/form-data">  
  
curso  
<select name="curso"  id="curso">
<option  value="basico">Curso Básico</option>
<option  value="intensivo">Curso Intensivo</option>
</select>  
  
alojamiento  
<select name="alojamiento"  id="alojamiento">
<option  value="compartido">compartido</option>
<option  value="individual">individual</option>
<option  value="sinalojamiento">sin alojamiento</option>
</select>  
  
  
semanas  
<input type="text" value="" size="20"  name="semanas" id="semanas" />  
  
temporada  
<select name="temporada"  id="temporada">
<option  value="baja">Enero-Junio</option>
<option  value="media">Junio-Octubre</option>
<option  value="alta">Octubre-Diciembre</option>
</select>  
  
  
  
<input type="button" value="Calculate" name="form[Calculate]" id="Calculate" onclick="calcula();" />  
  
<input type="text" value="" size="20"  name="total" id="total" readonly="readonly"/>  
  
</form> 
  #3 (permalink)  
Antiguo 30/04/2011, 09:10
 
Fecha de Ingreso: mayo-2005
Mensajes: 92
Antigüedad: 19 años
Puntos: 2
Respuesta: cálculos aritméticos y arrays

Hola a todos, sigo haciendo avances.... he conseguido que el campo de texto me muestre por fin los valores, pero hay algo que está mal, y es que sólo se queda en el primer array de cada variable y parece que no hace caso del condicional...

así,

si selecciono "temporada baja", siempre me mostrará "20", independientemente del curso y alojamiento que elija...

si selecciono "temporada media", siempre me mostrará "40", independientemente del curso y alojamiento que elija...

y si selecciono "temporada alta", siempre me mostrará "60", independientemente del curso y alojamiento que elija...

Todo esto teniendo en cuenta que ponemos siempre "1" en el número de semanas...

Porque no me está cambiando de array en función de lo que escoja en el select???

Este es el código que me está quedando...
Código Javascript:
Ver original
  1. <script language="javascript">  
  2.  
  3. function calcula(){  
  4.    
  5.  
  6. if(document.formReserva.curso.value == "basico"){  
  7.    var tipoCurso = "cursoBasico";  
  8. }else{  
  9.    var tipoCurso = "cursoIntensivo";  
  10. }  
  11.  
  12. if(tipoCurso = "cursoBasico"){  
  13.    var preciosCurso = [10,20,30];  
  14.    } else {  
  15.    var preciosCurso = [40,50,60];  
  16.    }  
  17.  
  18.  
  19. if(document.formReserva.alojamiento.value == "compartido"){  
  20.    var tipoAlojamiento = "alojamientoCompartido";  
  21. }else if(document.formReserva.alojamiento.value == "individual"){  
  22.    var tipoAlojamiento = "alojamientoIndividual";  
  23. }  
  24.      
  25. if(tipoAlojamiento = "alojamientoCompartido"){  
  26.    var preciosAlojamiento = [10,20,30];  
  27.    } else if(tipoAlojamiento = "alojamientoIndividual") {  
  28.    var preciosAlojamiento = [40,50,60];  
  29.    }else{  
  30.    var preciosAlojamiento = 0;    
  31.       }    
  32.  
  33. var semanas=document.formReserva.semanas.value  
  34.  
  35. //var semanas=document.getElementById("semanas");  
  36.  
  37. if(document.formReserva.temporada.value == "baja"){  
  38.    var precioCurso = preciosCurso[0];  
  39.    var precioAlojamiento = preciosAlojamiento[0];  
  40.    }else if(document.formReserva.temporada.value == "media"){  
  41.    var precioCurso = preciosCurso[1];  
  42.    var precioAlojamiento = preciosAlojamiento[1];  
  43.    }else{  
  44.    var precioCurso = preciosCurso[2];  
  45.    var precioAlojamiento = preciosAlojamiento[2];  
  46.    }  
  47.  
  48. var precioTotal = (precioCurso+precioAlojamiento)*semanas;
  49.  
  50. document.formReserva.total.value = precioTotal;
  51.  
  52. }
  #4 (permalink)  
Antiguo 30/04/2011, 09:18
 
Fecha de Ingreso: mayo-2005
Mensajes: 92
Antigüedad: 19 años
Puntos: 2
Respuesta: cálculos aritméticos y arrays

Bueno, he colocado unos alert para que me devuelva lo que está recibiendo y parece que el problema está aquí..
Código Javascript:
Ver original
  1. if(document.formReserva.curso.value == "basico"){  
  2.    var tipoCurso = "cursoBasico";  
  3. }else{  
  4.    var tipoCurso = "cursoIntensivo";  
  5. }

siempre me muestra "cursoBasico", alguien sabe a que es debido.... he revisado la sintáxis y yo creo que está bien...

Muchas gracias a todos!!
  #5 (permalink)  
Antiguo 30/04/2011, 13:19
 
Fecha de Ingreso: mayo-2005
Mensajes: 92
Antigüedad: 19 años
Puntos: 2
Respuesta: cálculos aritméticos y arrays

Bueno, ya está solucionado... al final me lo he guisado y comido yo solito.... fallaban algunos operadores, hay que tener en cuenta esas cosas... lo dejo aquí por si le puede servir de ayuda a alguien... la lógica del script está en el primer post...

Código HTML:
<form method="post" name="formReserva" id="userForm" enctype="multipart/form-data">  
  
curso  
<select name="curso"  id="curso">
<option  value="basico">Curso Básico</option>
<option  value="intensivo">Curso Intensivo</option>
</select>  
  
alojamiento  
<select name="alojamiento"  id="alojamiento">
<option  value="compartido">compartido</option>
<option  value="individual">individual</option>
<option  value="sinalojamiento">sin alojamiento</option>
</select>  
  
  
semanas  
<input type="text" value="" size="20"  name="semanas" id="semanas" />  
  
temporada  
<select name="temporada"  id="temporada">
<option  value="baja">Enero-Junio</option>
<option  value="media">Junio-Octubre</option>
<option  value="alta">Octubre-Diciembre</option>
</select>  
  
  
  
<input type="button" value="Calculate" name="form[Calculate]" id="Calculate" onclick="calcula();" />  
  
<input type="text" value="" size="20"  name="total" id="total" readonly="readonly"/>  
  
</form> 
y el js
Código Javascript:
Ver original
  1. <script language="javascript">  
  2.  
  3. function calcula(){  
  4.    
  5.  
  6. if(document.formReserva.curso.value == "basico"){  
  7.    var tipoCurso = "cursoBasico";  
  8. }else{  
  9.    var tipoCurso = "cursoIntensivo";  
  10. }  
  11.  
  12. if(tipoCurso == "cursoBasico"){  
  13.    var preciosCurso = [10,20,30];  
  14.    } else {  
  15.    var preciosCurso = [40,50,60];  
  16.    }  
  17.  
  18.  
  19. if(document.formReserva.alojamiento.value == "compartido"){  
  20.    var tipoAlojamiento = "alojamientoCompartido";  
  21. }else if(document.formReserva.alojamiento.value == "individual"){  
  22.    var tipoAlojamiento = "alojamientoIndividual";  
  23. }else{
  24.     var tipoAlojamiento = "noAlojamiento";
  25.     }  
  26.      
  27. if(tipoAlojamiento == "alojamientoCompartido"){  
  28.    var preciosAlojamiento = [10,20,30];  
  29.    } else if(tipoAlojamiento == "alojamientoIndividual") {  
  30.    var preciosAlojamiento = [40,50,60];  
  31.    }else if(tipoAlojamiento == "noAlojamiento"){  
  32.    var preciosAlojamiento = [0,0,0];    
  33.       }    
  34.  
  35. var semanas=document.formReserva.semanas.value  
  36.  
  37. if(document.formReserva.temporada.value == "baja"){  
  38.    var precioCurso = preciosCurso[0];  
  39.    var precioAlojamiento = preciosAlojamiento[0];  
  40.    }else if(document.formReserva.temporada.value == "media"){  
  41.    var precioCurso = preciosCurso[1];  
  42.    var precioAlojamiento = preciosAlojamiento[1];  
  43.    }else{  
  44.    var precioCurso = preciosCurso[2];  
  45.    var precioAlojamiento = preciosAlojamiento[2];  
  46.    }  
  47.  
  48. var precioTotal = (precioCurso+precioAlojamiento)*semanas;
  49.  
  50. document.formReserva.total.value = precioTotal;
  51. }  
  52.  
  53. </script>

Gracias a todos por la ayuda.... lol!!!

Etiquetas: arrays
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 12:33.