Ver Mensaje Individual
  #5 (permalink)  
Antiguo 06/02/2005, 23:16
Appletalk
 
Fecha de Ingreso: febrero-2004
Mensajes: 221
Antigüedad: 20 años, 3 meses
Puntos: 0
GC tenes un problema de conceptos generales.

Como sabras, tenes diferentes tipos de datos. Por ejemplo 50 es un entero, pero yo puedo considerar 50 un string, una cadena.

Si un usuario tipea el numero en un <input type="text"> y accedes al valor, normalmente lo almacenaras en una string -o no-, obtendras su valor entero y luego lo trataras.

Entonces, tu problema es que estas sumando dos caracteres, y en javascript cuando utilizas el + con strings, concatena (une). Tu script esta tomando el caracter 0 5 y luego el 1 0 , por ejemplo, entonces une los dos numeros y los imprime.

La solucion es pasar de string a entero. En javascript lo haces con parseInt.

Código HTML:
<script>

num = '50';
var numero = new String(num)
if (numero.length>=1)
{var numero2=parseInt(num.charAt(0))+parseInt(num.charAt(1))
}
alert("Tu numero es:" + numero2) 

</script> 
Esto funciona correctamente.
Ahora, tambien podemos hacer calculos para lograrlo. Seguramente esto sera mas rapido..

Código HTML:
<script type="text/javascript">

/* Defino a num como string porque posiblemente sera el valor de un formulario en el futuro */
num = '51';

/* Obtengo el valor entero de num. Recorda que los lenguajes interpretan de derecha a izquierda, osea que obtiene el valor entero de num y lo asigna a num :P */
num = parseInt(num);

/* Saco la cifra1 haciendo una aproximacion matematica */
cifra1 = Math.floor(num / 10);

/* Saco la cifra 2 restando */
cifra2 = num - (cifra1) * 10;

resultado = cifra1 + cifra2;
alert(resultado);

</script> 
Como sabras, Javascript es mucho mas veloz tratando con numeros que con cadenas