Comunidad de diseño web y desarrollo en internet online

cálculos aritméticos y arrays

Citar            
MensajeEscrito el 30 Abr 2011 11:45 am
Hola a todos, les explico... tengo que calcular unos precios sobre unos cursos y unos alojamientos...

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. 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... 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

Código HTML :

<form method="post" name="formularioI" id="userForm" enctype="multipart/form-data"> 
 
curso 
<select multiple="multiple" name="field1"  id="field1"  ><option  value="basico">Curso Básico</option><option  value="intensivo">Curso Intensivo</option></select> 
 
alojamiento 
<select multiple="multiple" name="field2"  id="field2"  ><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="field3" id="field3" /> 
 
temporada 
<select multiple="multiple" name="field4"  id="field4"  ><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> 
 
<script language="javascript"> 
 
function calcula(){ 
 
var preciosCurso = 0; 
var preciosAlojamiento = 0; 
 
if(formularioI.field1.value == 'basico'){ 
   var tipoCurso = "cursoBasico"; 
}else{ 
   var tipoCurso = "cursoIntensivo"; 
} 
 
if(tipoCurso = "cursoBasico"){ 
   var preciosCurso = [10,20,30]; 
   } else { 
   var preciosCurso = [40,50,60]; 
   } 
 
 
if(formularioI.field2.value == 'compartido'){ 
   var tipoAlojamiento = "alojamientoCompartido"; 
}else if(formularioI.field2.value == individual){ 
   var tipoAlojamiento = "alojamientoIndividual"; 
} 
    
if(tipoAlojamiento = "alojamientoCompartido"){ 
   var preciosAlojamiento = [10,20,30]; 
   } else if(tipoAlojamiento = "alojamientoIndividual") { 
   var preciosAlojamiento = [40,50,60]; 
   }else{ 
   var preciosAlojamiento = 0;    
      }    
 
var semanas=document.getElementById('field3'); 
 
if(formularioI.field4.value == 'baja'){ 
   var precioCurso = preciosCurso[0]; 
   var precioAlojamiento = preciosCurso[0]; 
   }else if(formularioI.field4.value == 'media'){ 
   var precioCurso = preciosCurso[1]; 
   var precioAlojamiento = preciosAlojamiento[1]; 
   }else{ 
   var precioCurso = preciosCurso[2]; 
   var precioAlojamiento = preciosAlojamiento[2]; 
   } 
 
var precioTotal = (precioCurso+precioAlojamiento)*semanas; 
} 
 
</script> 



gracias de nuevo y un saludo

Por hust

14 de clabLevel



 

chrome
Citar            
MensajeEscrito el 30 Abr 2011 02:40 pm
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 :

<script language="javascript">  
  
function calcula(){  
   
  
if(document.formReserva.curso.value == "basico"){  
   var tipoCurso = "cursoBasico";  
}else{  
   var tipoCurso = "cursoIntensivo";  
}  
  
if(tipoCurso = "cursoBasico"){  
   var preciosCurso = [10,20,30];  
   } else {  
   var preciosCurso = [40,50,60];  
   }  
  
  
if(document.formReserva.alojamiento.value == "compartido"){  
   var tipoAlojamiento = "alojamientoCompartido";  
}else if(document.formReserva.alojamiento.value == "individual"){  
   var tipoAlojamiento = "alojamientoIndividual";  
}  
     
if(tipoAlojamiento = "alojamientoCompartido"){  
   var preciosAlojamiento = [10,20,30];  
   } else if(tipoAlojamiento = "alojamientoIndividual") {  
   var preciosAlojamiento = [40,50,60];  
   }else{  
   var preciosAlojamiento = 0;     
      }     
  
var semanas=document.getElementById("semanas");  
  
if(document.formReserva.temporada.value == "baja"){  
   var precioCurso = preciosCurso[0];  
   var precioAlojamiento = preciosAlojamiento[0];  
   }else if(document.formReserva.temporada.value == "media"){  
   var precioCurso = preciosCurso[1];  
   var precioAlojamiento = preciosAlojamiento[1];  
   }else{  
   var precioCurso = preciosCurso[2];  
   var precioAlojamiento = preciosAlojamiento[2];  
   }  
  
var precioTotal = (precioCurso+precioAlojamiento)*semanas; 
 
document.formReserva.total.value = precioTotal;
} 
</script>


muchas gracias a todos!

Por hust

14 de clabLevel



 

chrome
Citar            
MensajeEscrito el 30 Abr 2011 06:31 pm
Te da NaN (Not a Number) por que debe ser que estas tratando de procesar una cadena de texto como numeros. Fijate que en

Código Javascript :


var semanas=document.getElementById("semanas");   

 


¿Estas tratando de sacar el valor del campo no? Lo correcto seria:

Código Javascript :

 

var semanas=document.getElementById("semanas").value;  



Sin el .value lo que tu estabas tratando de hacer era multiplicar "semanas" por preciocurso y precio alojamiento y no el valor de semanas. Prueba modificando eso si hay errores me avisas

Por davp

Claber

278 de clabLevel

1 tutorial

Genero:Masculino  

Venezuela

mozilla
Citar            
MensajeEscrito el 01 May 2011 01:34 am
Hola davp, muchas gracias por tu ayuda... en efecto fallaba eso y algún operador más que tenía mal puesto... os pongo aquí el código por si le sirve a alguien en el futuro

el formulario html


Código HTML :


<table width="50%" border="0">

<form name="formReserva" action="envio.php" method="post">
  <tr>
    <td><label>Nombre:</label></td>
    <td><input id="nombre" class="inputForm" name="nombre" type="text" /></td>
  </tr>
  <tr>
    <td><label>Teléfono:</label></td>
    <td><input id="telefono" class="inputForm" name="telefono" type="text" /> </td>
  </tr>
  <tr>
    <td><label>E-mail:</label></td>
    <td><input id="email" class="inputForm" name="email" type="text" /> </td>
  </tr>
  <tr>
    <td><label>Tipo de curso:</label></td>
    <td><select id="curso" name="curso">
                  <option>Elige tipo de curso</option> 
                  <option value="basico">Curso Básico</option> 
                  <option value="intensivo">Curso Intensivo </option>
             </select>
    </td>
  </tr>
  <tr>
    <td><label>Tipo de alojamiento:</label></td>
    <td><select id="alojamiento" name="alojamiento">
                <option>Elige tipo de alojamiento</option>
                <option value="compartido">Compartido</option>
                <option value="individual">Individual</option>
                <option value="sinalojamiento">Sin alojamiento</option> 
             </select>
      </td>
  </tr>
  <tr>
    <td><label>Número de semanas:</label></td>
    <td><input id="semanas" name="semanas" size="20" type="text" /></td>
  </tr>
  <tr>
    <td><label>Fecha de reserva:</label></td>
    <td><select id="temporada" name="temporada"> 
              <option>Elige la fecha de llegada</option> 
              <option value="baja">Temporada baja</option> 
              <option value="media">Temporada Media</option> 
              <option value="alta">Temporada Alta</option>
           </select>
      </td>
  </tr>
  <tr>
    <td><input type="button" name="calcular" onclick="calcula();" value="Calcula el precio de tu curso" /></td>
    <td><input type="text" value="" size="20"  name="total" id="total" readonly="readonly"/></td>
  </tr>
  <tr>
    <td><label>Deja tu comentario:</label></td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>Caja comentario</td>
    <td><textarea id="mensaje" name="mensaje"></textarea></td>
  </tr>
  <tr>
    <td>Haz la reserva</td>
    
    <td>
    <input name="enviar" type="submit" value="Enviar reserva" />
    </td>
  </tr>
 </form>
</table>



y el javascript

Código Javascript :


function calcula(){  
   
  
if(document.formReserva.curso.value == "basico"){  
   var tipoCurso = "cursoBasico";  
}else{  
   var tipoCurso = "cursoIntensivo";  
}  
  
if(tipoCurso == "cursoBasico"){  
   var preciosCurso = [12,110,147];  
   } else {  
   var preciosCurso = [17,75,210];  
   }  
  
  
if(document.formReserva.alojamiento.value == "compartido"){  
   var tipoAlojamiento = "alojamientoCompartido";  
}else if(document.formReserva.alojamiento.value == "individual"){  
   var tipoAlojamiento = "alojamientoIndividual";  
}else{
    var tipoAlojamiento = "noAlojamiento";
    }  
     
if(tipoAlojamiento == "alojamientoCompartido"){  
   var preciosAlojamiento = [4,8,13];  
   } else if(tipoAlojamiento == "alojamientoIndividual") {  
   var preciosAlojamiento = [9,16,27];  
   }else if(tipoAlojamiento == "noAlojamiento"){  
   var preciosAlojamiento = [0,0,0];     
      }     
  
var semanas=document.formReserva.semanas.value  
  
if(document.formReserva.temporada.value == "baja"){  
   var precioCurso = preciosCurso[0];  
   var precioAlojamiento = preciosAlojamiento[0];  
   }else if(document.formReserva.temporada.value == "media"){  
   var precioCurso = preciosCurso[1];  
   var precioAlojamiento = preciosAlojamiento[1];  
   }else{  
   var precioCurso = preciosCurso[2];  
   var precioAlojamiento = preciosAlojamiento[2];  
   }  
  
var precioTotal = (precioCurso+precioAlojamiento)*semanas; 
 
document.formReserva.total.value = precioTotal;
}



Gracias por la ayuda de todas formas davp!!

Por hust

14 de clabLevel



 

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.