Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Función que sume numeros y el resultado lo muestre de forma automática

Estas en el tema de Función que sume numeros y el resultado lo muestre de forma automática en el foro de Javascript en Foros del Web. Hola estoy modificando los datos de una base de datos con php, dichos datos son 6 números os cuales al sumarlos me tiene que dar ...
  #1 (permalink)  
Antiguo 25/10/2014, 16:54
Avatar de MLDGATO  
Fecha de Ingreso: marzo-2011
Ubicación: Guatemala
Mensajes: 113
Antigüedad: 13 años, 1 mes
Puntos: 2
Pregunta Función que sume numeros y el resultado lo muestre de forma automática

Hola estoy modificando los datos de una base de datos con php, dichos datos son 6 números os cuales al sumarlos me tiene que dar 100, la idea es que tengo un formulario con 6 inputs los cuales obtiene el value por medio de php y en el body tengo una función con el evento OnLoad que me llama a la función suma y esta toma los valores de los inputs y los suma, hasta aquí voy bien y en cada input coloque el evento OnChange que me llama a la misma función para que me valla mostrando el resultado segun cambio los valores de cada input, este es el código que tengo:

Código HTML:
Ver original
  1. <body class="fondogris" onLoad="suma()">
  2. <div id="ContenidoPruebas">
  3. <form id="Prueba" name="Prueba" method="post">
  4.   <h3>Modificar el resultado del test de Toma de decisiones.</h3>
  5.   <p>&nbsp;</p>
  6. <p><strong>Postulante:</strong> <?php echo $fila['Nombres']." ".$fila['Apellidos']; ?></p>
  7. <p>&nbsp;</p>
  8. <p style="width:375px; text-align:justify;"><strong>Nota:</strong> Importante, para modificar los datos de este test los valores deben dar un total del 100% de lo contrario no podrá hacer la modificación.</p>
  9. <p>&nbsp;</p>
  10. <table width="550" align="center" cellspacing="5">
  11.   <tbody>
  12.     <tr>
  13.       <td width="315"><label for="PadreCritico">Padre Critico:</label></td>
  14.       <td width="164" align="right"><label for="Total">% Total:</label></td>
  15.     </tr>
  16.     <tr>
  17.       <td><input name="PadreCritico" type="number" required="required" class="datos" id="PadreCritico" max="100" min="0" value="<?php echo $ttd['PadreCritico']; ?>" onChange="suma()"></td>
  18.       <td align="right"><input name="Total" type="text" class="datosmenor3" id="Total"></td>
  19.     </tr>
  20.     <tr>
  21.       <td><label for="PadreNutritivo2">Padre Nutritivo:</label></td>
  22.       <td>&nbsp;</td>
  23.     </tr>
  24.     <tr>
  25.       <td><input name="PadreNutritivo" type="number" required="required" class="datos" id="PadreNutritivo" max="100" min="0" value="<?php echo $ttd['PadreNutritivo']; ?>" onChange="suma()"></td>
  26.       <td>&nbsp;</td>
  27.     </tr>
  28.     <tr>
  29.       <td><label for="Adulto2">Adulto:</label></td>
  30.       <td>&nbsp;</td>
  31.     </tr>
  32.     <tr>
  33.       <td><input name="Adulto" type="number" required="required" class="datos" id="Adulto" max="100" min="0" value="<?php echo $ttd['Adulto']; ?>" onChange="suma()"></td>
  34.       <td>&nbsp;</td>
  35.     </tr>
  36.     <tr>
  37.       <td><label for="NinoSumiso2">Niño Sumiso:</label></td>
  38.       <td>&nbsp;</td>
  39.     </tr>
  40.     <tr>
  41.       <td><input name="NinoSumiso" type="number" required="required" class="datos" id="NinoSumiso" max="100" min="0" value="<?php echo $ttd['NinoSumiso']; ?>" onChange="suma()"></td>
  42.       <td>&nbsp;</td>
  43.     </tr>
  44.     <tr>
  45.       <td><label for="NinoLibre">Niño Revelde:</label></td>
  46.       <td>&nbsp;</td>
  47.     </tr>
  48.     <tr>
  49.       <td><input name="NinoRevelde" type="number" required="required" class="datos" id="NinoRevelde" max="100" min="0" value="<?php echo $ttd['NinoRevelde']; ?>" onChange="suma()"></td>
  50.       <td>&nbsp;</td>
  51.     </tr>
  52.     <tr>
  53.       <td><label for="NinoLibre">Niño Libre:</label></td>
  54.       <td>&nbsp;</td>
  55.     </tr>
  56.     <tr>
  57.       <td><input name="NinoLibre" type="number" required="required" class="datos" id="NinoLibre" max="100" min="0" value="<?php echo $ttd['NinoLibre']; ?>" onChange="suma()"></td>
  58.       <td>&nbsp;</td>
  59.     </tr>
  60.     <tr>
  61.       <td colspan="2" align="center"><input name="submit" type="submit" class="botonform" id="submit" value="Modificar"></td>
  62.       </tr>
  63.   </tbody>
  64. <img src="../../Imagenes/Postulantes/<?php echo $seccion7['Imagen']; ?>" width="150" height="150" />
  65. </form>
  66. $("#Prueba").validate();
  67. </div>
  68. </body>

La función es:

Código Javascript:
Ver original
  1. function suma()
  2. {
  3.     PC = parseInt(document.getElementById("PadreCritico").value);
  4.     PN = parseInt(document.getElementById("PadreNutritivo").value);
  5.     A = parseInt(document.getElementById("Adulto").value);
  6.     NS = parseInt(document.getElementById("NinoSumiso").value);
  7.     NR = parseInt(document.getElementById("NinoRevelde").value);
  8.     NL = parseInt(document.getElementById("NinoLibre").value);
  9.    
  10.     suma = PC+PN+A+NS+NR+NL;
  11.    
  12.     document.getElementById("Total").value = suma;
  13.    
  14. }

Como ven en el body está la función con el evento OnLoad, ahí me funciona, pero en el Onchange de los inputs ahí no, muchas gracias por la orientación.
  #2 (permalink)  
Antiguo 25/10/2014, 21:12
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Función que sume numeros y el resultado lo muestre de forma automática

buenas,
tienes que tener mucho cuidado cuando repites identificadores/nombres ya utilizados. tienes un conflicto de identificador con una función y una variable. la función se llama suma y la variable (linea 10) también. la función se define en el ámbito global y su nombre ya esta reservado para esa función. luego cuando se ejecuta la función, se crea la variable suma también en el ámbito global. como ya existe dicho nombre en ese ámbito, lo que ocurre es que se sobre escribe la función por el valor computado. de modo que ya deja de ser una función y ahora es un número. lo más adecuado sería que declares la variable en el ámbito local de la función usando var.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.

Etiquetas: eventos, funciones
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 10:55.