Come aggiungo un valore intero con javascript (jquery) a un valore che restituisce una stringa?


91

Ho un semplice blocco html come:

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

Utilizzando jquery sto cercando di aggiungere un 1 al valore (8).

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

Quello che sta succedendo è che sembra:

81

poi

811

non 9, che sarebbe la risposta corretta. Che cosa sto facendo di sbagliato?

Risposte:


186

parseInt () lo costringerà a essere di tipo intero, o sarà NaN (non un numero) se non può eseguire la conversione.

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

Il secondo parametro (radice) si assicura che sia analizzato come un numero decimale.


10
Fai attenzione a parseInt (), riconosce "010" come 9 (i valori che iniziano con zero vengono analizzati come ottali).
MightyE

3
Bleh, "010" viene interpretato come 8 (non 8)
MightyE

7
@ Jacob Relkin: poiché è stato utile, gli ho appena dato un altro +1. Se conosci una risposta migliore, è un peccato che tu non l'abbia condivisa.
ANeves pensa che SE sia il male

1
Lo fa, a meno che non rilevi uno zero iniziale, quindi diventa ottale. Un semplice problema tecnico quando si accetta l'input dell'utente.
Diodeus - James MacFarlane

1
Funziona bene fintanto che si specifica la radice utilizzando il secondo parametro: parseInt("010", 10)restituisce dieci.
jahroy,

29

Parse int è lo strumento che dovresti usare qui, ma come qualsiasi strumento dovrebbe essere usato correttamente. Quando si utilizza parseInt, è necessario utilizzare sempre il parametro radix per assicurarsi che venga utilizzata la base corretta

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

27

L'intero viene convertito in una stringa anziché viceversa. Tu vuoi:

var newValue = parseInt(currentValue) + 1

12

parseInt non ha funzionato per me in IE. Quindi ho semplicemente usato + sulla variabile che desideri come numero intero.

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

4

Per quanto riguarda l'errata interpretazione ottale di .js, ho appena usato questo ...

parseInt(parseFloat(nv))

e dopo il test con gli zeri iniziali, tornava ogni volta con la rappresentazione corretta.

spero che questo ti aiuti.


2

Il tuo codice dovrebbe essere così:

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

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

Hacks N Tricks


1

per incrementare di uno puoi fare qualcosa di simile

  var newValue = currentValue ++;

8
Sicuramente ++ currentValue?
Marcin

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

Ho semplicemente risolto il problema del tuo mese, l'array getMonth inizia da 0 a 11.


1

Puoi moltiplicare la variabile per 1 per forzare JavaScript a convertire la variabile in un numero per te e quindi aggiungerla all'altro valore. Questo funziona perché la moltiplicazione non è sovraccarica come l'addizione. Alcuni potrebbero dire che questo è meno chiaro di parseInt, ma è un modo per farlo e non è stato ancora menzionato.


0

Aggiungi semplicemente un segno più prima del valore del testo

var newValue = +currentValue + 1;

-1

È possibile utilizzare il metodo parseInt () per convertire una stringa in un numero intero in javascript

Devi solo cambiare il codice in questo modo

$("replies").text(parseInt($("replies").text(),10) + 1);

In che modo è diverso dalla risposta pubblicata sopra (che sono stati pubblicati circa 10 anni fa)?
Code Maniac
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.