web-dev-qa-db-fra.com

Comment ajouter une valeur entière avec javascript (jquery) à une valeur renvoyant une chaîne?

J'ai un simple bloc HTML comme:

<span id="replies">8</span>

En utilisant jquery, j'essaie d'ajouter un 1 à la valeur (8).

var currentValue = $("#replies").text();
var newValue = currentValue + 1;
$("replies").text(newValue);

Qu'est-ce qui se passe est il apparaît comme:

81

ensuite

811

pas 9, ce qui serait la bonne réponse. Qu'est-ce que je fais mal?

86
rball

parseInt () le forcera à être de type entier ou à NaN (pas un nombre) s'il ne peut pas effectuer la conversion.

var currentValue = parseInt($("#replies").text(),10);

Le deuxième paramètre (radix) s'assure qu'il est analysé comme un nombre décimal.

185

Parse int est l'outil que vous devez utiliser ici, mais comme tout outil, il doit être utilisé correctement. Lorsque vous utilisez parseInt, vous devez toujours utiliser le paramètre radix pour vous assurer que la base correcte est utilisée.

var currentValue = parseInt($("#replies").text(),10);
28
Jon P

L'entier est converti en chaîne plutôt que l'inverse. Tu veux:

var newValue = parseInt(currentValue) + 1
25
Chuck

parseInt n'a pas fonctionné pour moi dans IE. Donc j'ai simplement utilisé + sur la variable que vous voulez comme un entier.

var currentValue = $("#replies").text();
var newValue = +currentValue + 1;
$("replies").text(newValue);
9
Gareth Nel

En ce qui concerne la mauvaise interprétation octale de .js - je viens de l'utiliser ...

parseInt(parseFloat(nv))

et après des tests avec des zéros non significatifs, revenait à chaque fois avec la représentation correcte.

j'espère que cela t'aides.

4
Bill Ortell

Votre code devrait ressembler à ceci:

<span id="replies">8</span>

var currentValue = $("#replies").text();
var newValue = parseInt(parseFloat(currentValue)) + 1;
$("replies").text(newValue);

Hacks N Tricks

2
rajeev

à incrémenter de un, vous pouvez faire quelque chose comme

  var newValue = currentValue ++;
1
alex

Vous pouvez multiplier la variable par 1 pour forcer JavaScript à convertir la variable en nombre pour vous, puis à l'ajouter à votre autre valeur. Cela fonctionne car la multiplication n'est pas surchargée comme l'ajoute. Certains diront peut-être que c'est moins clair que parseInt, mais c'est une façon de le faire et cela n'a pas encore été mentionné.

1
Ryan
var month = new Date().getMonth();
var newmon = month + 1;
$('#month').html((newmon < 10 ? '0' : '') + newmon );

J'ai simplement corrigé votre problème de mois, le tableau getMonth va de 0 à 11.

1
Adeel Ishfaq

Ajoutez simplement un signe plus avant la valeur du texte

var newValue = +currentValue + 1;
0
Agorreca