Foros del Web » Programando para Internet » Javascript »

¿Alguien me puede ayudar?

Estas en el tema de ¿Alguien me puede ayudar? en el foro de Javascript en Foros del Web. Hola nuevamente amigos. Bueno..., en verdad soy un completo novato en esto de Java-Script Me gustaria ver si me pueden ayudar. Como puedo hacer la ...
  #1 (permalink)  
Antiguo 28/12/2004, 22:41
 
Fecha de Ingreso: diciembre-2004
Mensajes: 17
Antigüedad: 19 años, 4 meses
Puntos: 0
Pregunta ¿Alguien me puede ayudar?

Hola nuevamente amigos.

Bueno..., en verdad soy un completo novato en esto de Java-Script

Me gustaria ver si me pueden ayudar.

Como puedo hacer la suma de dos campos de un formulario?



Lo que pasa es que trato de hacerlo, pero como que el script entiende ke tiene ke sumar "letras" y me marca "NAN"


Saludos.
  #2 (permalink)  
Antiguo 29/12/2004, 02:16
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61
Vamos a ver. Lo que debes poner es delante del valor parseInt para que convierta la cadena en número. Si éste tiene decimales conviertelo con parseFloat.

Sería más o menos así:
valor1=parseInt(document.forms['formulario'].elements['sumando1'].value);

o más moderno:

valor1=parseInt(document.getElementById("sumando1" ).value);

o

valor1=parseFloat(document.getElementById("sumando 1").value);


Con ese pequeño cambio en tu script seguro que lo consigues. En cualquier caso te he puesto un pequeño ejemplo:

Código HTML:
<html>
<head>

	<style>
	input{text-align:right;border:none;border:solid 1px black;font:normal 10px/10px verdana;}
	</style>
	
	<script>
	var formulario;
	function inicio(){	
	formulario=document.forms[0];
	formulario.onkeyup=sumar;
	}
	
	function sumar(){
	
	suma1=(isNaN(parseFloat(formulario['sumando1'].value)) || !formulario['sumando1'].value)?0:parseFloat(formulario['sumando1'].value);
	suma2=(isNaN(parseFloat(formulario['sumando2'].value)) || !formulario['sumando2'].value)?0:parseFloat(formulario['sumando2'].value);
	formulario['resultado'].value=suma1+suma2;
	}
	</script>
</head>

<body onload="inicio()">
<form>
<input align="right" align="right" type="input" size="20" name="sumando1"><br>
<input align="right" type="input" size="20" name="sumando2"><br>
---------------------<br>
<input type="input" readonly size="20" name="resultado"><br>


</form>


</body>
</html> 
Igual parece un poco complicado, pero es sencillo. la fórmula
valor=(igualdad)?valor1:valor2;

no hace más que comprobar si igualdad es cierto. Si lo es le da a valor el valor1 y si no el valor2. Por ejemplo:

numero=(4>5)?2:3;

En este caso numero valdrá 3 porque cuatro no es mayor que cinco.
prueba=3
numero=(prueba>2)?"prueba es mayor que 2":"prueba es menor o igual que 2";
Aquí, dependiendo del valor de prueba dará uno u otro. En este caso numero valdría "prueba es mayor que 2".

Lo que hace isNaN(valor) es determinar si valor es o no un número. Si no es número da un valor de true y si no da false. Un ejemplo:

if(isNaN(valor)){alert(valor+" no es un número!");}
else{alert(valor+"+5="+(valor+5))}


Espero haberte ayudado!
Si tienes alguna duda me preguntas.
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.

Última edición por KarlanKas; 29/12/2004 a las 02:31
  #3 (permalink)  
Antiguo 29/12/2004, 02:24
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61
Simplificando un poco la función para sumar:
Código HTML:
	function sumar(){
	suma=0;
	for(a=1;a<3;a++){
	suma+=(!isNaN(parseFloat(formulario['sumando'+a].value)))?parseFloat(formulario['sumando'+a].value):0;
	}
	formulario['resultado'].value=suma;}
A ver si lo entiendes!
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.

Última edición por KarlanKas; 29/12/2004 a las 02:29
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 11:09.