Wie füge ich einem Wert, der eine Zeichenfolge zurückgibt, einen ganzzahligen Wert mit Javascript (jquery) hinzu?

91

Ich habe einen einfachen HTML-Block wie:

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

Mit jquery versuche ich, dem Wert (8) eine 1 hinzuzufügen.

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

Was passiert ist, dass es so aussieht:

81

dann

811

nicht 9, das wäre die richtige Antwort. Was mache ich falsch?

rball
quelle

Antworten:

186

parseInt () erzwingt die Eingabe einer Ganzzahl oder NaN (keine Zahl), wenn die Konvertierung nicht durchgeführt werden kann.

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

Der zweite Parameter (Radix) stellt sicher, dass er als Dezimalzahl analysiert wird.

Diodeus - James MacFarlane
quelle
10
Achten Sie auf parseInt (), es erkennt "010" als 9 (Werte, die mit einer Null führen, werden als oktal analysiert).
MightyE
3
Bleh, "010" analysiert als 8 (nicht 8)
MightyE
7
@ Jacob Relkin: Da dies nützlich war, gab ich ihm nur noch +1. Wenn Sie eine bessere Antwort kennen, ist es schade, dass Sie sie nicht geteilt haben.
ANeves
1
Wenn es keine führende Null erkennt, wird es oktal. Ein einfacher Fehler beim Akzeptieren von Benutzereingaben.
Diodeus - James MacFarlane
1
Es funktioniert einwandfrei, solange Sie den Radix mit dem zweiten Parameter angeben: parseInt("010", 10)Gibt zehn zurück.
Jahroy
29

Parse int ist das Werkzeug, das Sie hier verwenden sollten, aber wie jedes Werkzeug sollte es korrekt verwendet werden. Wenn Sie parseInt verwenden, sollten Sie immer den radix-Parameter verwenden, um sicherzustellen, dass die richtige Basis verwendet wird

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

Die Ganzzahl wird in eine Zeichenfolge konvertiert und nicht umgekehrt. Sie wollen:

var newValue = parseInt(currentValue) + 1
Futter
quelle
12

parseInt hat bei mir im IE nicht funktioniert. Also habe ich einfach + für die gewünschte Variable als Ganzzahl verwendet.

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

In Bezug auf die oktale Fehlinterpretation von .js - ich habe gerade diese ...

parseInt(parseFloat(nv))

und nach dem Testen mit führenden Nullen kam jedes Mal mit der richtigen Darstellung zurück.

hoffe das hilft.

Bill Ortell
quelle
2

Ihr Code sollte folgendermaßen aussehen:

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

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

Hacks N Tricks

Rajeev
quelle
1

um eins zu erhöhen, können Sie so etwas tun

  var newValue = currentValue ++;
Alex
quelle
8
Sicher ++ currentValue?
Marcin
1
var month = new Date().getMonth();
var newmon = month + 1;
$('#month').html((newmon < 10 ? '0' : '') + newmon );

Ich habe einfach Ihr monatliches Problem behoben. GetMonth Array startet von 0 bis 11.

Adeel Ishfaq
quelle
1

Sie können die Variable mit 1 multiplizieren, um JavaScript zu zwingen, die Variable in eine Zahl für Sie zu konvertieren, und sie dann Ihrem anderen Wert hinzuzufügen. Dies funktioniert, weil die Multiplikation nicht wie die Addition überladen ist. Einige mögen sagen, dass dies weniger klar ist als parseInt, aber es ist eine Möglichkeit, dies zu tun, und es wurde noch nicht erwähnt.

Ryan
quelle
0

Fügen Sie einfach ein Pluszeichen vor dem Textwert ein

var newValue = +currentValue + 1;
Agorreca
quelle
-1

Mit der Methode parseInt () können Sie Zeichenfolgen in Javascript in Ganzzahlen konvertieren

Sie ändern den Code einfach so

$("replies").text(parseInt($("replies").text(),10) + 1);
Codemaker
quelle
Wie unterscheidet sich diese Antwort von der oben veröffentlichten Antwort (die vor ungefähr 10 Jahren veröffentlicht wurde)?
Code Maniac