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?

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.


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);

27

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

var newValue = parseInt(currentValue) + 1

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);

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.


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


1

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

  var newValue = currentValue ++;

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.


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.


0

Fügen Sie einfach ein Pluszeichen vor dem Textwert ein

var newValue = +currentValue + 1;

-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);

Wie unterscheidet sich diese Antwort von der oben veröffentlichten Antwort (die vor ungefähr 10 Jahren veröffentlicht wurde)?
Code Maniac
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.