[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

4 Comments

  • Pablo 4 Enero 2012 Responder

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

  • Jhon-erick 6 Julio 2012 Responder

    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 2 Junio 2013 Responder

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

  • Cueto re-cabron 9 Septiembre 2015 Responder

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

Submit your comment

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