[En realidad no es una curiosidad sino que un error de lógica de programación]

Estoy armando un código para un generador... sí, a las 4AM., y me apareció la siguiente curiosidad en Javascript:

considerando que tengo un textbox con el nombre cantidad que comienza con un 1 como valor

[sourcecode="JScript"]

var id = jQuery("#cantidad").val();
id=id+1;

[/sourcecode]

al primer click me da 11

al segundo 111

al tercer 1111

Lo mismo con

[sourcecode="javascript"]

var id = jQuery("#cantidad").val();
id+=1;

[/sourcecode]

La explicación, muy fácil, el valor id es un String, y lo que hace el + es concatenar el valor en vez de sumarlo.

La solución, aún más fácil, convertir el String en Int.

De la manera poco elegante:

[sourcecode="javascript"]

id=(id*1)+1;

[/sourcecode]

o de la de caballeros:

[sourcecode="javascript"]

id=parseInt(id)+1;

[/sourcecode]

Esto es parte del código inservible pero útil para los que no conozcan cómo parchar el error 😛

Saludos

Last modified: 13 Febrero 2010

Author

Comments

Interesante tip, lo acabo de aplicar en una solución rasca que había implementado, gracias!

Jhon-erick 

gracias por el tip por q lo había olvidado hace ya un par de años que no programo en javascript y ps la memoria en algunos momentos falla..prefiero la manera poco elegante es la que mas fácilmente recuerdo jajaja

Danilson LópezLópez 

cree un codigo, a la hora de sumar convierto los números con parseInt pero sigue concatena

Cueto re-cabron 

usare la de no caballera, por que al sumar estos campos me da una NaN

Write a Reply or Comment

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.