Ver Mensaje Individual
  #4 (permalink)  
Antiguo 09/09/2012, 19:06
Avatar de emprear
emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 17 años, 8 meses
Puntos: 1567
Respuesta: Error NaN en Javascript

ok. empecemos por analizar esto
todos los valores desde un form en javascript se reciben como cadenas por lo tanto las operaciones aritméticas te resultan en errores, deberías utilizar parseInt, o parseFloat para transformar dichas cadenas '45367' en números 45367

Te pongo un ejemplo (que aclaro tiene muchas imperfecciones), pero para que te des una idea

Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <title>titulo</title>
  5. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  6.  
  7. <script type="text/javascript">
  8. //<![CDATA[
  9. function totales(elid){
  10. var identificador = elid.split('_');
  11. var registro = identificador[1];
  12. if(document.getElementById('cantidad_'+registro).value == ''){
  13. var cantidad = 0;
  14. }else{
  15. var cantidad = parseInt(document.getElementById('cantidad_'+registro).value);
  16. }
  17. var valor = parseInt(document.getElementById('valor_'+registro).value);
  18. var total = cantidad*valor;
  19. document.getElementById('total_'+registro).value = total;
  20. }
  21.  
  22. //]]>
  23.  
  24. </head>
  25. <form action="#">
  26. <tr>
  27. <td><input type="text" id="cantidad_1" onkeyup="totales(this.id)" /></td><td><input type="text" id="valor_1" onkeyup="totales(this.id)" /></td><td><input type="text" id="total_1" /></td>
  28. </tr>
  29. </form>
  30. </body>
  31. </html>
fijate que la suma solo se produce si tanto cantidad como contienen números. Y yo usaría el evento onkeyup en lugar de onchange.
Ademá no aclarás si el campo cantidad es editable, por ejemplo cantidad 6 precio 3 te pòne 18, pero si modificas cantidad y no volvés al campo precio a cambiar algo, no te arregla el total, por lo que la función debería hacerse siempre en los 2 campos supongo
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.