Foros del Web » Programando para Internet » Javascript »

ayuda con un calculo porfavor

Estas en el tema de ayuda con un calculo porfavor en el foro de Javascript en Foros del Web. Tengo un formulario en php y estoy haciendo el calculo con javascript pero tengo el siguiente problema si alguien me puede ayudar por favor en ...
  #1 (permalink)  
Antiguo 26/01/2010, 07:37
 
Fecha de Ingreso: diciembre-2009
Ubicación: Santiago, Chile
Mensajes: 143
Antigüedad: 14 años, 4 meses
Puntos: 2
ayuda con un calculo porfavor

Tengo un formulario en php y estoy haciendo el calculo con javascript pero tengo el siguiente problema si alguien me puede ayudar por favor en el formulario hago un calculo que me arroja dos resultados que son (total_impo) y (total2) mediante un if si el total_impo es menor me haga un calculo tomando total_impo y en el else me tome total2 para la misma operación pero siempre me toma el resultado de total_impo.
No entiendo que tengo mal acá dejo el código para que alguien me eche una mano por favor. Gracias de antemano.
Código Javascript:
Ver original
  1. if(total2>total_impo)
  2. {
  3.   var calcular=document.getElementById("calcular").checked;
  4.  
  5.   document.getElementById("seguro2").value = Math.round(document.getElementById("calcular").checked ? (total2)*0.60/100: 0);
  6.  
  7. var calcular1=document.getElementById("calcular1").checked;
  8.  
  9.  document.getElementById("caja").value = Math.round(document.getElementById("calcular1").checked ? (total2)*0.60/100: 0);
  10.  
  11.  var cantidad=a.total2.value;
  12. var precio=a.imposiciones_por.value;
  13. var subt=cantidad*precio;
  14. var total=subt/100;
  15. var total1=(total-1.87)/100;
  16. //var total_general=substring(total,total.length,-2);;
  17. if (isNaN(subt))
  18. {
  19.  a.seguro.focus();
  20. }
  21. else
  22. {
  23. a.seguro.value=Math.round(total1);
  24.  
  25.  
  26. var cantidad=a.total2.value;
  27. var precio=a.por_salud.value;
  28. var subt=cantidad*precio;
  29. var total=(subt/100);
  30.  
  31. if (isNaN(subt))
  32. {
  33. a.sistema_salud.focus();
  34. }
  35. else
  36. {
  37. a.sistema_salud.value=Math.round(total);
  38. }
  39. }
Código Javascript:
Ver original
  1. else
  2. {
  3.  
  4.   var calcular=document.getElementById("calcular").checked;
  5.  
  6.   document.getElementById("seguro2").value = Math.round(document.getElementById("calcular").checked ? (total_impo)*0.60/100: 0);
  7.  
  8. var calcular1=document.getElementById("calcular1").checked;
  9.  
  10.  document.getElementById("caja").value = Math.round(document.getElementById("calcular1").checked ? (total_impo)*0.60/100: 0);
  11.  
  12.  
  13.  
  14. var cantidad=a.total_impo.value;
  15. var precio=a.imposiciones_por.value;
  16. var subt=cantidad*precio;
  17. var total=(subt/100)-seguro;
  18.  
  19. if (isNaN(subt))
  20. {
  21.  a.imposiciones.focus();
  22. }
  23. else
  24. {
  25. a.imposiciones.value=Math.round(total);
  26. }
  27.  
  28.  var cantidad=a.total_impo.value;
  29. var precio=a.imposiciones_por.value;
  30. var subt=cantidad*precio;
  31. var total=subt/100;
  32. var total1=(total-1.87)/100;
  33. //var total_general=substring(total,total.length,-2);;
  34. if (isNaN(subt))
  35. {
  36.  a.seguro.focus();
  37. }
  38. else
  39. {
  40. a.seguro.value=Math.round(total1); // Control que muestra el total
  41. }
  #2 (permalink)  
Antiguo 26/01/2010, 09:16
Avatar de Tecna  
Fecha de Ingreso: enero-2010
Mensajes: 291
Antigüedad: 14 años, 3 meses
Puntos: 45
Respuesta: ayuda con un calculo porfavor

Buenas,

para poder hacer cálculos con el texto que introduzcas deberías asegurarte primero que efectivamente los datos son numéricos para ello puedes simplemente restar 0, o usar la constructora Number( ) con la cadena como argumento (solo para numeros en base 10) , o usar las funciones parseInt o parseFloat (en cualquier base y para números enteros o decimales).
La función isNaN también se usa para comprobar si un dato es un valor numérico legal y devuelve true si el valor analizado es o se puede convertir en el valor especial NaN y false en el resto de casos, por lo tanto cuando usas como condición del if : " if (isNaN(subt)) " ese bloque sólo se ejecutará cuando subt sea NaN y en el resto de casos (null, undefined, cadenas, números, objetos) se ejecutaría el else que no es lo que estás buscando. Sería mejor poner como condición lo que estás buscando y que se ha de hacer mas a menudo en el if y la excepción en el else.
El código según lo pones queda un poco confuso porque no se sabe muy bien cada else a que if pertenece. La norma dice que una cláusula else forma parte de la instrucción if mas cercana así que es probable que tampoco esté haciendo lo que esperas que haga. Y quedaría mas claro si indentaras el código y en lugar de usar else usaras else if para anidar varios if
  #3 (permalink)  
Antiguo 27/01/2010, 10:27
 
Fecha de Ingreso: diciembre-2009
Ubicación: Santiago, Chile
Mensajes: 143
Antigüedad: 14 años, 4 meses
Puntos: 2
Respuesta: ayuda con un calculo porfavor

gracias tecna por el aporte por hay buscando encontre algo que me soluciono el problema que tenia gracias.

Etiquetas: calculo
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 05:25.