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?
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.
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);
L'entier est converti en chaîne plutôt que l'inverse. Tu veux:
var newValue = parseInt(currentValue) + 1
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);
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.
Votre code devrait ressembler à ceci:
<span id="replies">8</span>
var currentValue = $("#replies").text();
var newValue = parseInt(parseFloat(currentValue)) + 1;
$("replies").text(newValue);
à incrémenter de un, vous pouvez faire quelque chose comme
var newValue = currentValue ++;
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é.
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.
Ajoutez simplement un signe plus avant la valeur du texte
var newValue = +currentValue + 1;