Foros del Web » Programando para Internet » Javascript »

Sumar resultados de una multiplicacion

Estas en el tema de Sumar resultados de una multiplicacion en el foro de Javascript en Foros del Web. Estoy haciendo una suma de los resultados de una multiplicacion de varios campos, pero por mucho que intento no me da el valor. Ya que ...
  #1 (permalink)  
Antiguo 06/11/2013, 08:34
 
Fecha de Ingreso: octubre-2008
Ubicación: Colombia
Mensajes: 448
Antigüedad: 15 años, 6 meses
Puntos: 2
Sumar resultados de una multiplicacion

Estoy haciendo una suma de los resultados de una multiplicacion de varios campos, pero por mucho que intento no me da el valor. Ya que para que me sume los resultados tengo que escribirlos a mao, no los toma automaticamente del resultado de la suma en cada campo, ademas de eso, lo que me hace es sumar cada numero no el total, es decir, si escrito en cada campo 1, 1, 1, 1, que deberia darme un valor total de 4 lo que en realidad hace es escribirme los cuatro unos asi 1111. Entonces quiero que por favor alguien me ayude, ya solamente me falta eso. Anexo todo el código para que me puedan ayudar.

Es una multiplicación de la cantidad de articulo por su valor unitario, eso me funciona bien, lo que no me funciona es la suma total de todos los campos del resultado de la multiplicación para saber el total de la venta:

Este es el Codigo

Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  4. <title>Documento sin título</title>
  5.  
  6. function multiplicar() {
  7. m1 = document.getElementById("multiplicando").value;
  8. m2 = document.getElementById("multiplicador").value;
  9. r = m1*m2;
  10. document.getElementById("resultado").value = r;
  11.  
  12. m1 = document.getElementById("multiplicando2").value;
  13. m2 = document.getElementById("multiplicador2").value;
  14. r2 = m1*m2;
  15. document.getElementById("resultado2").value = r2;
  16.  
  17. m1 = document.getElementById("multiplicando3").value;
  18. m2 = document.getElementById("multiplicador3").value;
  19. r3 = m1*m2;
  20. document.getElementById("resultado3").value = r3;
  21.  
  22. m1 = document.getElementById("multiplicando4").value;
  23. m2 = document.getElementById("multiplicador4").value;
  24. r4 = m1*m2;
  25. document.getElementById("resultado4").value = r4;
  26.  
  27. }
  28.  
  29. function sumar() {
  30. t1 = document.getElementById("resultado").value;
  31. t2 = document.getElementById("resultado2").value;
  32. t3 = document.getElementById("resultado3").value;
  33. t4 = document.getElementById("resultado4").value;
  34.  
  35. rt = t1+t2+t3+t4;
  36. document.getElementById("total").value = rt;
  37. }
  38.  
  39.  
  40. </head>
  41.  
  42.  
  43. <table align="center" border="0">
  44. <form id="multiplicar" action="reg01.php" method="post">
  45.  
  46. <tr align="center" valign="middle">
  47.   <td><strong>Pedido</strong></td>
  48.   <td><strong>Nombre Producto</strong></td>
  49.   <td><strong>Cantidad</strong></td>
  50.   <td><strong>Vr Unit.</strong></td>
  51.   <td>&nbsp;</td>
  52. </tr>
  53.  
  54.  
  55. <tr>
  56.  
  57. <td>Producto 1</td>
  58. <td><input type="text" name="producto" size="60"></td>
  59. <td><input type="text" name="cant" id="multiplicando" value=0 onchange="multiplicar();" size="4" /></td>
  60. <td><input type="text" name="vunit" id="multiplicador" onchange="multiplicar();" value=0 size="16" /></td>
  61. <td align="right"><input type="text" name="resultado" id="resultado" onchange="sumar();" value=0 size="20" /></td>
  62. </tr>
  63.  
  64. <tr>
  65. <td>Producto 2</td>
  66. <td><input type="text" name="producto2" size="60" /></td>
  67. <td><input type="text" name="cant2" id="multiplicando2" value=0 onchange="multiplicar();" size="4" /></td>
  68. <td><input type="text" name="vunit2" id="multiplicador2" onchange="multiplicar();" value=0 size="16" /></td>
  69. <td align="right"><input type="text" name="resultado2" id="resultado2" onchange="sumar();" value=0 size="20"/></td>
  70. </tr>
  71.  
  72. <tr>
  73.  <td>Producto 3</td>
  74.  <td><input type="text" name="producto3" size="60" /></td>
  75. <td><input type="text" name="cant3" id="multiplicando3" value=0 onchange="multiplicar();" size="4" /></td>
  76. <td><input type="text" name="vunit3" id="multiplicador3" onchange="multiplicar();" value=0 size="16" /></td>
  77. <td align="right"><input type="text" name="resultado3" id="resultado3" onchange="sumar();" value=0 size="20" /></td>
  78. </tr>
  79.  
  80. <tr>
  81. <td>Producto 4</td>
  82. <td><input type="text" name="producto4" size="60" /></td>
  83. <td><input type="text" name="cant4" id="multiplicando4" value=0 onchange="multiplicar();" size="4" /></td>
  84. <td><input type="text" name="vunit4" id="multiplicador4" onchange="multiplicar();" value=0 size="16" /></td>
  85. <td align="right"><input type="text" name="resultado4" id="resultado4" onchange="sumar();" value=0 size="20"/></td>
  86. </tr>
  87.  
  88. <tr>
  89. <td>&nbsp;</td>
  90. <td>&nbsp;</td>
  91. <td>&nbsp;</td>
  92. <td align="right">Total</td>
  93. <td align="right">
  94.   <input type="text" name="total" id="total" size="20" />
  95.  </td>
  96.  </tr>
  97. <tr>
  98.   <td><input type="submit" name="enviar" id="enviar" value="Enviar" /></td>
  99.   <td>&nbsp;</td>
  100.   <td>&nbsp;</td>
  101.   <td>&nbsp;</td>
  102.   <td align="right">&nbsp;</td>
  103. </tr>
  104.  
  105.  
  106.  
  107. </form>
  108.  
  109.  
  110. </body>
  111. </html>
__________________
Desarrollo de Aplicaciones de Escritorio, Sitios Web, Audio y Video en SISGUS
  #2 (permalink)  
Antiguo 06/11/2013, 08:38
Avatar de quinqui  
Fecha de Ingreso: agosto-2004
Ubicación: Chile!
Mensajes: 776
Antigüedad: 19 años, 8 meses
Puntos: 56
Respuesta: Sumar resultados de una multiplicacion

Holas, karenlorenadg.

Lo que pasa es que las variables son de tipo texto, y el signo + de JS las toma como tal, por eso las concatena, no las suma como números. Debes convertirlas de alguna forma a número, puedes usar una función como parseInt() sobre cada variable, o prueba multiplicando cada variable por 1 (eso no lo he probado, pero en teoría funcionaría, creo).

Saludos!
__________________
pipus.... vieeeeeji plomius!!!
*quinqui site*
  #3 (permalink)  
Antiguo 06/11/2013, 10:10
 
Fecha de Ingreso: octubre-2008
Ubicación: Colombia
Mensajes: 448
Antigüedad: 15 años, 6 meses
Puntos: 2
Respuesta: Sumar resultados de una multiplicacion

Todo bien pero ahora no logro que me sume automáticamente del resultado obtenidos de los campos Cantidad y Valor Unitario, los suma sólo si yo los ingreso manualmente en el total de cada producto. ¡Qué puedo hacer, como hago para que me lea los valores automáticamente del resultado de la multiplicación de cada producto sin tener que hacerlo manualmente? Anexo una imagen de lo que quiero lograr
__________________
Desarrollo de Aplicaciones de Escritorio, Sitios Web, Audio y Video en SISGUS
  #4 (permalink)  
Antiguo 06/11/2013, 13:04
Avatar de quinqui  
Fecha de Ingreso: agosto-2004
Ubicación: Chile!
Mensajes: 776
Antigüedad: 19 años, 8 meses
Puntos: 56
Respuesta: Sumar resultados de una multiplicacion

Ok, calma ^^
Intenta agregando una captura al evento keypress de los input donde ingresas Cantidad y Valor, de modo que cada vez que vayas escribiendo, vaya refrescando el valor de los inputs en la columna Total.

Algo como esto:
Código HTML:
<!-- esto es una fila -->
<input type="text" name="cantidad[]" id="cantidad_1" onkeypress="recalcular(1)" />
<input type="text" name="valor[]" id="valor_1" onkeypress="recalcular(1)" />
<input type="text" name="subtotal[]" id="subtotal_1" /> 
Donde la función recalcular() es JS y contiene:
1. La multiplicación de cantidad por valor, de la cual colocarás el resultado en el value de la casilla Total de la fila correspondiente (dada por el parámetro, en el ejemplo "1", porque es la fila "1").
2. La suma de las casillas Total. Ahí debieras realizar un loop por todas las casillas de Total, si las tienes en un array es lo ideal (como lo coloqué yo en el ejemplo).

En ese sentido, podrías reducir el tamaño de tu función multiplicar(), a que reciba sólo los valores a multiplicar de la fila seleccionada (de la fila donde estás escribiendo). Al final, la función recalcular() debiera simplemente llamar a multiplicar() (de la fila en curso) y a sumar().


Saludos!
__________________
pipus.... vieeeeeji plomius!!!
*quinqui site*
  #5 (permalink)  
Antiguo 07/11/2013, 07:19
 
Fecha de Ingreso: octubre-2008
Ubicación: Colombia
Mensajes: 448
Antigüedad: 15 años, 6 meses
Puntos: 2
Respuesta: Sumar resultados de una multiplicacion

No logro entenderte, cómo haga para aplicarlo a mis lineas, podrías indicarme por favor en que sitio exactamente lo debo hacer, estoy intentando pero por lo que me propones es modificar gran cantidad de mi JS. Espero tu valiosa colaboración.
__________________
Desarrollo de Aplicaciones de Escritorio, Sitios Web, Audio y Video en SISGUS
  #6 (permalink)  
Antiguo 07/11/2013, 08:48
Avatar de quinqui  
Fecha de Ingreso: agosto-2004
Ubicación: Chile!
Mensajes: 776
Antigüedad: 19 años, 8 meses
Puntos: 56
Respuesta: Sumar resultados de una multiplicacion

Actualmente, tu función multiplicar() realiza la multiplicación de todas las filas de la tabla. Mi sugerencia es que sólo haga la multiplicación de la fila seleccionada, la fila donde el usuario está escribiendo los valores (en las casillas de Cantidad y Valor). Algo como esto (y estoy dándote el código nuevo):

Código javascript:
Ver original
  1. function multiplicar(posFila) {
  2. m1 = document.getElementById("multiplicando_" + posFila).value;
  3. m2 = document.getElementById("multiplicador_" + posFila).value;
  4. r = m1*m2;
  5. document.getElementById("resultado_" + posFila).value = r;
  6. }

Para que esto funcione, tienes que nombrar e identificar a las casillas de la tabla como te lo puse en mi post anterior.

La función recalcular() se gatillará a raíz del evento keypress, como te decía antes (si no conoces este evento, o en general sobre eventos en JS, investígalo googleando). La función lo que hará será recibir el número de la fila, de modo que:

Código javascript:
Ver original
  1. function recalcular(posFila)
  2. {
  3.  multiplicar(posFila);
  4.  sumar();
  5. }

En verdad con todo esto modificas tu código, pero sólo lo resumes, no lo cambias demasiado de lo que ya tenías.

Saludos!
__________________
pipus.... vieeeeeji plomius!!!
*quinqui site*
  #7 (permalink)  
Antiguo 09/11/2013, 09:23
 
Fecha de Ingreso: octubre-2008
Ubicación: Colombia
Mensajes: 448
Antigüedad: 15 años, 6 meses
Puntos: 2
Respuesta: Sumar resultados de una multiplicacion

Lo siento pero no logro hacer lo que me dices, podrías explicarme un poco mas, por mucho que lo intento y nada me funciona, lo que ocurre ahora es que ni siquiera me hace la multiplicación de Cantidad por Vr Unitario. Ahora si me perdi
__________________
Desarrollo de Aplicaciones de Escritorio, Sitios Web, Audio y Video en SISGUS
  #8 (permalink)  
Antiguo 09/11/2013, 11:44
Avatar de satjaen  
Fecha de Ingreso: septiembre-2012
Ubicación: Jaén (Andalucía)
Mensajes: 893
Antigüedad: 11 años, 7 meses
Puntos: 10
Respuesta: Sumar resultados de una multiplicacion

A ver si te sirven estos ejemplos:

Código Javascript:
Ver original
  1. <html>
  2. <head>
  3. <script>
  4. function actualiza_total()
  5. {
  6.  
  7.     var cant = document.getElementById('cantidad').value;
  8.     var precio = document.getElementById('precio').value;
  9.     if(isNaN(cant) || isNaN(precio)) {
  10.         alert("Solo valores numericos por favor");
  11.         document.getElementById('cantidad').value = "";
  12.         document.getElementById('precio').value = "";
  13.         return;
  14.     }
  15.     document.getElementById('total').value = cant*precio;
  16. }
  17. </script>
  18. </head>
  19.  
  20. <body>
  21.     <input type="text" id="cantidad">
  22.     <input type="text" id="precio">
  23.     <input type="button" value="multiplicar" onClick="actualiza_total()">
  24.     <input type="text" id="total">
  25. </body>
  26. </html>

Código Javascript:
Ver original
  1. <html>
  2. <head>
  3. <script>
  4. function actualiza_total()
  5. {
  6.  
  7.     var cant = document.getElementById('cantidad').value;
  8.     var precio = document.getElementById('precio').value;
  9.     if(isNaN(cant) || isNaN(precio)) {
  10.         alert("Solo valores numericos por favor");
  11.         document.getElementById('cantidad').value = "";
  12.         document.getElementById('precio').value = "";
  13.         return;
  14.     }
  15.     document.getElementById('total').value = cant*precio;
  16. }
  17. </script>
  18. </head>
  19.  
  20. <body>
  21.     <input type="text" id="cantidad">
  22.     <input type="text" id="precio">
  23.     <input type="text" id="total" onfocus="actualiza_total()">
  24. </body>
  25. </html>

Un saludo

Última edición por satjaen; 09/11/2013 a las 12:10
  #9 (permalink)  
Antiguo 11/11/2013, 07:42
Avatar de quinqui  
Fecha de Ingreso: agosto-2004
Ubicación: Chile!
Mensajes: 776
Antigüedad: 19 años, 8 meses
Puntos: 56
Respuesta: Sumar resultados de una multiplicacion

Holas, satjaen. Los códigos están buenos, pero karen necesita que los valores se vayan actualizando al mismo tiempo que va escribiendo en los input text.
Saludos!
__________________
pipus.... vieeeeeji plomius!!!
*quinqui site*

Etiquetas: javascript+html, multiplicacion, suma
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 20:47.