Die Methode .text()
gibt immer eine Zeichenfolge zurück. Einige Operatoren wie der Operator +
sind überladen, um sowohl arithmetische als auch Zeichenfolgenoperationen auszuführen. Im Falle von Strings führt es eine Verkettung durch, daher das Ergebnis "51".
Wenn Sie eine Zeichenkette haben und einen nicht erzwingenden Operator verwenden müssen, müssen Sie parseInt
(oder eine andere Methode zur Umwandlung in eine Zahl) verwenden.
Der Operator *
zum Beispiel implicity führt diesen Zwang aus, so dass Sie in dieser Situation den parseInt
-Aufruf nicht benötigen (siehe beispielsweise updated fiddle).
Beachten Sie, dass der Operator seinen Operand erzwingt, aber Sie haben den Postfixoperator verwendet, so dass er keinen Effekt hat. Verwenden Sie den Präfix-Operator und Sie können sehen, es funktioniert:
$('#withoutParseIntButIncrement').text(++value);
also zusammenfassen:
// Parses string to number and adds 1
$('#withParseInt').text(parseInt(value) + 1);
// Coerces number 1 to string "1" and concatenates
$('#withoutParseInt').text(value + 1);
// Implicity coerces string to number, but after it's been inserted into the DOM
$('#withoutParseIntButIncrement').text(value++);
// Implicity coerces string to number, before it's been inserted into the DOM
$('#withoutParseIntButIncrement').text(++value);
// Implicity coerces to number
$('#withoutParseIntButMultiply').text(value * 2);
Randbemerkung: gilt es als gute Praxis immer das zweite Argument übergeben (die Radix) zu parseInt
.Dadurch wird sichergestellt, die Zahl in der richtigen Basis analysiert wird:
parseInt(value, 10); // For base 10
Das klingt vernünftig. Manchmal hatte ich einige ernsthafte Probleme, wenn ich mit Zahlen aus DOM rechnete, also kam ich immer dazu, parseInt zu verwenden, wenn ich mit der Nummer umging. Deine Antwort bestätigt es. So bin ich auf der sicheren Seite. – iappwebdev
http://stackoverflow.com/questions/11786758/why-parseint08-is-giving-0-whereas-parseint07-is-giving-7?rq=1 Diese Frage erklärt auch, warum Sie wegen einiger immer eine Basis liefern sollten seltsame Browser-Macken beim Parsen von ganzen Zahlen. –