Código de JavaScript - Multiplicar los inputs por filas y hacer el total

Imágen de perfil
Val: 2.013
Oro
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

Multiplicar los inputs por filas y hacer el totalgráfica de visualizaciones


JavaScript

Publicado el 21 de Junio del 2018 por Xavi (533 códigos)
2.688 visualizaciones desde el 21 de Junio del 2018
Este simple código, muestra como multiplicar el precio del producto por la cantidad indicada por el usuario en cada producto por separado, a medida que el usuario va introduciendo los importes y/o cantidades. También realiza la suma total de los productos.

multiplicar-productos-javascript

Versión 1
estrellaestrellaestrellaestrellaestrella(3)

Actualizado el 25 de Junio del 2018 (Publicado el 21 de Junio del 2018)gráfica de visualizaciones de la versión: Versión 1
2.689 visualizaciones desde el 21 de Junio del 2018
estrellaestrellaestrellaestrellaestrella
estrellaestrellaestrellaestrella
estrellaestrellaestrella
estrellaestrella
estrella

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
<!DOCTYPE html>
<html>
<head>
    <style>
    .monto {text-align:right;}
    .totales {font-weight:bold;}
    </style>
</head>
 
<body>
    <table>
        <thead>
            <tr>
                <th>producto</th>
                <th>Precio por unidad</th>
                <th>Cantidad</th>
                <th>Precio por producto</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>
                    Producto A
                </td>
                <td>
                    <input type="number" class="monto input" value="22.50">
                </td>
                <td>
                    <input type="number" class="monto input">
                </td>
                <td>
                    <input type="text" class="monto total" value="0" disabled>
                </td>
            </tr>
            <tr>
                <td>
                    Producto B
                </td>
                <td>
                    <input type="number" class="monto input" value="7.00">
                </td>
                <td>
                    <input type="number" class="monto input">
                </td>
                <td>
                    <input type="text" class="monto total" value="0" disabled>
                </td>
            </tr>
            <tr>
                <td>
                    Producto C
                </td>
                <td>
                    <input type="number" class="monto input" value="30.12">
                </td>
                <td>
                    <input type="number" class="monto input">
                </td>
                <td>
                    <input type="text" class="monto total" value="0" disabled>
                </td>
            </tr>
            <tr>
                <td></td>
                <td></td>
                <td>
                    Total
                </td>
                <td>
                    <input type="text" class="monto totales" value="0" disabled>
                </td>
            </tr>
        </tbody>
    </table>
</body>
 
</html>
 
<script>
// generamos un evento click y keyup para cada elemento input con la clase .input
var input=document.querySelectorAll(".input");
input.forEach(function(e) {
    e.addEventListener("click",multiplica);
    e.addEventListener("keyup",multiplica);
});
 
// funcion que genera la multiplicacion
function multiplica() {
 
    // nos posicionamos en el tr del producto
    var tr=this.closest("tr");
 
    var total=1;
 
    // recorremos todos los elementos del tr que tienen la clase .input
    var inputs=tr.querySelectorAll(".input");
    inputs.forEach(function(e) {
        total*=e.value;
    });
 
    // mostramos el total con dos decimales
    tr.querySelector(".total").value=total.toFixed(2);
 
    // indicamos que calcule el total
    calcularTotal(this.closest("table"));
}
 
// funcion que calcula la suma total de los productos
function calcularTotal(e) {
    var total=0;
 
    // obtenemos todos los totales y los sumamos
    var totales=e.querySelectorAll(".total");
    totales.forEach(function(e) {
        total+=parseFloat(e.value);
    });
 
    // mostramos la suma total con dos decimales
    e.getElementsByClassName("totales")[0].value=total.toFixed(2);
}
</script>



Comentarios sobre la versión: Versión 1 (3)

Imágen de perfil
21 de Junio del 2018
estrellaestrellaestrellaestrellaestrella
No ha dejado ningún comentario
Responder
Imágen de perfil
16 de Agosto del 2018
estrellaestrellaestrellaestrellaestrella
No ha dejado ningún comentario
Responder
antonio
1 de Julio del 2020
estrellaestrellaestrellaestrellaestrella
El ejemplo es fabuloso muchas gracias y una pregunta puede alguien decirme como sumar mas conceptos después del total.

Es decir el total es en realidad un subtotal al que se calcula el 16% del iva , otros descuentos y por fin al final obtenemos el total real.

Agradezco la atención.
Responder

Comentar la versión: Versión 1

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad

http://lwp-l.com/s4666