Código de JavaScript - Suma de valores

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

Suma de valoresgráfica de visualizaciones


JavaScript

Actualizado el 8 de Diciembre del 2019 por Xavi (548 códigos) (Publicado el 21 de Enero del 2013)
157.159 visualizaciones desde el 21 de Enero del 2013
Código que muestra como sumar los valores numéricos de unos cuadros de texto a medida que vamos escribiendo. Valida que los valores sean numéricos, mostrando el cuadro de texto en rojo si son incorrectos.

suma-valores

Versión 1 - Versión sin decimales
estrellaestrellaestrellaestrellaestrella(3)

Actualizado el 27 de Noviembre del 2014 (Publicado el 21 de Enero del 2013)gráfica de visualizaciones de la versión: Versión 1 - Versión sin decimales
17.675 visualizaciones desde el 21 de Enero del 2013

Versión 2 - Versión con decimales
estrellaestrellaestrellaestrellaestrella(19)

Publicado el 27 de Noviembre del 2014gráfica de visualizaciones de la versión: Versión 2 - Versión con decimales
111.840 visualizaciones desde el 27 de Noviembre del 2014
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
<!DOCTYPE html>
<!--http://www.lawebdelprogramador.com-->
<html>
<head>
    <script type="text/javascript">
    /**
     * Funcion que se ejecuta cada vez que se añade una letra en un cuadro de texto
     * Suma los valores de los cuadros de texto
     */
    function sumar()
    {
        var valor1=verificar("valor1");
        var valor2=verificar("valor2");
        var valor3=verificar("valor3");
        var valor4=verificar("valor4");
        // realizamos la suma de los valores y los ponemos en la casilla del
        // formulario que contiene el total
        document.getElementById("total").value=parseFloat(valor1)+parseFloat(valor2)+parseFloat(valor3)+parseFloat(valor4);
    }
 
    /**
     * Funcion para verificar los valores de los cuadros de texto. Si no es un
     * valor numerico, cambia de color el borde del cuadro de texto
     */
    function verificar(id)
    {
        var obj=document.getElementById(id);
        if(obj.value=="")
            value="0";
        else
            value=obj.value;
        if(validate_importe(value,1))
        {
            // marcamos como erroneo
            obj.style.borderColor="#808080";
            return value;
        }else{
            // marcamos como erroneo
            obj.style.borderColor="#f00";
            return 0;
        }
    }
 
    /**
     * Funcion para validar el importe
     * Tiene que recibir:
     *  El valor del importe (Ej. document.formName.operator)
     *  Determina si permite o no decimales [1-si|0-no]
     * Devuelve:
     *  true-Todo correcto
     *  false-Incorrecto
     */
    function validate_importe(value,decimal)
    {
        if(decimal==undefined)
            decimal=0;
 
        if(decimal==1)
        {
            // Permite decimales tanto por . como por ,
            var patron=new RegExp("^[0-9]+((,|\.)[0-9]{1,2})?$");
        }else{
            // Numero entero normal
            var patron=new RegExp("^([0-9])*$")
        }
 
        if(value && value.search(patron)==0)
        {
            return true;
        }
        return false;
    }
    </script>
 
    <style>
    input   {border:1px solid #808080;text-align:right;width:100px;}
    #total  {font-weight:bold;}
    div     {width:200px;text-align:right;}
    </style>
</head>
 
<body>
    <h1>Suma de valores</h1>
    <div>Valor 1: <input type="text" id="valor1" onkeyup="sumar();"></div>
    <div>Valor 2: <input type="text" id="valor2" onkeyup="sumar();"></div>
    <div>Valor 3: <input type="text" id="valor3" onkeyup="sumar();"></div>
    <div>Valor 4: <input type="text" id="valor4" onkeyup="sumar();"></div>
    <div>Total: <input type="text" id="total" disabled value="0">
</body>
</html>



Comentarios sobre la versión: Versión 2 - Versión con decimales (19)

Daniel
13 de Febrero del 2015
estrellaestrellaestrellaestrellaestrella
Hola estimado amigo muy bueno tu ejemplo, pero como podria hacer para que me sume campos agregados por decir :
1
2
3
<input type="text" id="debe" name="debe[]"/>
<input type="text" id="debe1" name="debe[]"/>
<input type="text" id="debe3" name="debe[]"/>
y asi sucesivamente los que vaya agregando. GRACIAS
Responder
15 de Junio del 2016
estrellaestrellaestrellaestrellaestrella
Buenas Daniel,

Averiguaste como hacerlo??

Gracias
Responder
PabloEmilio
11 de Septiembre del 2018
estrellaestrellaestrellaestrellaestrella
Hola. a ver si me dan una ayudita con el ejemplo, Hay alguna forma para que en el total se reflejen 2 decimales cuanto el valor es 00, o sea si el total es 98.00 que salgan dichos 00 en el total.?
Responder
Imágen de perfil
12 de Septiembre del 2018
estrellaestrellaestrellaestrellaestrella
Hola Pablo, la manera es añadiendo toFixed(2) en la linea 18, quedando así:

1
document.getElementById("total").value=parseFloat(valor1)+parseFloat(valor2)+parseFloat(valor3)+parseFloat(valor4).toFixed(2);
Responder
PabloEmilio
13 de Septiembre del 2018
estrellaestrellaestrellaestrellaestrella
Gracias Xavi anotado, si no es mucha molestia, hay alguna forma de convertir un formulario dinámico html en PDF, sin depender de un proveedor con un par de códigos.?
Responder
Sergio
14 de Mayo del 2015
estrellaestrellaestrellaestrellaestrella
Muy buen ejemplo...acaban de salvarme !
Responder
LOIDA
7 de Septiembre del 2016
estrellaestrellaestrellaestrellaestrella
muy buenos codigos
Responder
Cesar
3 de Diciembre del 2016
estrellaestrellaestrellaestrellaestrella
Me sirvió muy bien.
Responder
alan
19 de Enero del 2017
estrellaestrellaestrellaestrellaestrella
como le hago para poner el mismo formulario abajo pero en la funcion verificar cambiar el valor y que al final me sume los valore pero al anterior formulario, urgente!!!! saludos!!
Responder
9 de Febrero del 2017
estrellaestrellaestrellaestrellaestrella
Super bueno el codigo y funcional sin embargo yo lo estoy utilizando de la siguiente manera, tengo una tabla que tima como referencia un datis de un input fuera de ella pero necesito que el numero que se le mete al input lo sume conn un input que tiene cada fila pero de manera independente.. ejemplo


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<input id="valor 1" value="5">
 
	  <table>
	  	<thead>
	  		<tr>
	  			<th>valor 2</th>
	  			<th>total</th>
	  		</tr>
	  	</thead>
			<?php while ($r=$query->fetch_array()):?>
 
	  	<tbody>
	  		<tr>
	  			<td><input type="number" name="valor2"></td>
				<td>
					<input type="text" id="total" disabled value="0">
				</td>
	  		<?php endwhile;?>
			</table>

Poder tener el total de manera independiente valor1 + valor2


Gracias por cualquier ayuda que me puedan dar
Responder
9 de Febrero del 2017
estrellaestrellaestrellaestrellaestrella
En la primera fila de la tabla funciona bien en el resto ya desaparece la funcion!!
Responder
Jorge
20 de Febrero del 2017
estrellaestrellaestrellaestrellaestrella
Está muy bueno, soy novato en esto, pero tengo la duda de cuando ingreso los 4 digitos no me tira el resultado
Abajo dice resultado, pero no sé como hacer para que me de el resultado de la suma
Responder
Renzo Salinas
19 de Marzo del 2017
estrellaestrellaestrellaestrellaestrella
Perfecta ejecución.---
Responder
DIEGO ALVARADO
13 de Junio del 2017
estrellaestrellaestrellaestrellaestrella
HOLA BUEN EJEMPLO AMIGO, PERO SABES UN CÓDIGO PARA REDUCIR LOS DECIMALES QUE HAY ECUACIONES QUE TIENEN HASTA 12 DECIMALES, ES PARA REDUCIRLAS A 2 DECIMALES , GRACIAS POR EL CÓDIGO PUBLICADO Y SI ME AYUDARAS CON ESTO TE LO AGRADECERÍA
Responder
Liz
14 de Junio del 2017
estrellaestrellaestrellaestrellaestrella
que otras funciones puedo utilizar para guardar el resultado de una suma por ejemplo dcument.getelement muy buenos ejemplos
Responder
Alvin
4 de Julio del 2017
estrellaestrellaestrellaestrellaestrella
hola solo una consulta como puedo hacer para que cuando elimine un dato tambien reste al total que ya me a sumado ... este es el codigo


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
function genera_tabla(val1, val2, val3, val4) {
  // Obtener la referencia del elemento body
  var bodyx = document.getElementById("ultimo");
 
  // Crea un elemento <table> y un elemento <tbody>
  var tabla   = document.getElementById("tabla1");
  var tblBody = document.getElementById("tbodyxd");
if (val1 == "" || val2 == "" || val3 == "" || val4 == "" ) {
      return false;
     }else{
        // Crea las celdas
        for (var i = 0; i < 1; i++) {
          // Crea las hileras de la tabla
          var hilera = document.createElement("tr");
          hilera.setAttribute("id",(i+1));
 
 
          for (var j = 1; j <= 4; j++) {
            // Crea un elemento <td> y un nodo de texto, haz que el nodo de
            // texto sea el contenido de <td>, ubica el elemento <td> al final
            // de la hilera de la tabla
            var celda = document.createElement("td");
            switch (j){
              case 1:
                var textoCelda = document.createTextNode(val1);
                break;
              case 2:
                var textoCelda = document.createTextNode(val2);
                break;
                case 3:
                var textoCelda = document.createTextNode(val3);
                break;
              case 4:
              var total = document.getElementById("total");
              var sumaOtro = (val2)*(val3);
                var textoCelda= document.createTextNode(sumaOtro);
               total.innerHTML = parseFloat(total.innerHTML)+sumaOtro;
                break;
            }
            celda.appendChild(textoCelda);
            hilera.appendChild(celda);
          }
 
              /*var suma = sumaOtro;
              var total = document.getElementById("total");
              if (total.innerHTML == 'NaN') {
                total.innerHTML = 0;
              } */
 
 
          /*var suma = val4;
         var total = document.getElementById("total");
         total.innerHTML += parseFloat(suma);
         alert(total.innerHTML);*/
 
 
          var celda = document.createElement("td");
          var btnCelda = document.createElement("input");
          btnCelda.setAttribute("type","button");
          btnCelda.setAttribute("value","Quitar");
          btnCelda.setAttribute("id","botonBorra");
          btnCelda.setAttribute("onclick","quitarElemento("+(i+1)+")");
          celda.appendChild(btnCelda);
          hilera.appendChild(celda);
 
          // agrega la hilera al final de la tabla (al final del elemento tblbody)
          tblBody.appendChild(hilera);
        }
 
        // posiciona el <tbody> debajo del elemento <table>
        tabla.appendChild(tblBody);
        // appends <table> into <body>
        bodyx.appendChild(tabla);
        // modifica el atributo "border" de la tabla y lo fija a "2";
        tabla.setAttribute("border", "2");
      }
    }
 
function quitarElemento(idFila) {
  var elemento = document.getElementById(idFila);
  elemento.parentNode.removeChild(elemento);
};
 
 
 
var obj=null;
function viewHide(id)
{
var targetId, srcElement, targetElement;
var targetElement = document.getElementById(id);
if (obj!=null)
  obj.style.display='none';
obj=targetElement;
targetElement.style.display = "";
}


EL HTML

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
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Elementos Dinámicos</title>
  </head>
  <body>
    <label for="filas">Descripcion:</label><br>
    <input Onclick="viewHide('tabla1')"  type="text" id="a"><br>
 
    <label for="columnas">Cantidad:</label><br>
    <input type="text" id="b"><br>
 
    <label for="columnas">Precio Unitario:</label><br>
    <input  type="text" id="c"><br>
 
    <label   for="columnas">Total:</label><br>
    <input  type="text" id="d"><br>
 
    <hr>
 
    <input  type="button" value="Genera una tabla" onclick="genera_tabla(a.value, b.value, c.value, d.value)">
 
   <section id="ultimo">
    <table id="tabla1" style="display:none" border="1">
      <thead>
        <tr>
          <th>Descripción</th>
          <th>Cantidad</th>
          <th>Precio Unitario</th>
          <th>Total</th>
          <th>Opciones</th>
        </tr>
      </thead>
      <tbody id="tbodyxd">
      </tbody>
      <tfoot>
        <tr>
          <td>Totaless</td>
          <td>&nbsp;</td>
          <td>&nbsp;</td>
          <td><span id="total" disabled value="0" >0</span></td>
 
        </tr>
      </tfoot>
    </table>
    </section>
  </body>
  <script type="text/javascript" src="script2.js"></script>
 
 
</html>
Responder
Jose
12 de Julio del 2017
estrellaestrellaestrellaestrellaestrella
Muy bueno.
Responder
Juan
20 de Septiembre del 2017
estrellaestrellaestrellaestrellaestrella
Gracias, funciona directamente! Esto no pasa normalmente. Ahora a personalizarlo para mi proyecto. Saludos!
Responder
Ariel Martínez
20 de Octubre del 2017
estrellaestrellaestrellaestrellaestrella
Gracias por el aporte buen trabajo man!!!!!
Saludos!!!!
Responder

Comentar la versión: Versión 2 - Versión con decimales

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

Versión 3 - versión mejorada con ECMAScript6
estrellaestrellaestrellaestrellaestrella(3)

Publicado el 8 de Diciembre del 2019gráfica de visualizaciones de la versión: Versión 3 - versión mejorada con ECMAScript6
27.646 visualizaciones desde el 8 de Diciembre del 2019
http://lwp-l.com/s2278