Jak dodać liczbę całkowitą za pomocą javascript (jquery) do wartości, która zwraca ciąg?


92

Mam prosty blok html taki jak:

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

Używając jquery, próbuję dodać 1 do wartości (8).

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

To, co się dzieje, wygląda tak:

81

następnie

811

nie 9, co byłoby poprawną odpowiedzią. Co ja robię źle?

Odpowiedzi:


187

parseInt () wymusi, że będzie on typu integer lub będzie NaN (nie liczbą), jeśli nie może wykonać konwersji.

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

Drugi parametr (podstawa) zapewnia, że ​​jest on analizowany jako liczba dziesiętna.


10
Uważaj na parseInt (), rozpoznaje ona „010” jako 9 (wartości zaczynające się od zera są przetwarzane jako ósemkowe).
MightyE

3
Bleh, „010” analizuje jako 8 (nie 8)
MightyE,

7
@Jacob Relkin: Ponieważ było to przydatne, dałem mu kolejne +1. Jeśli znasz lepszą odpowiedź, szkoda, że ​​jej nie podzieliłeś.
ANeves uważa, że ​​SE jest zła

1
Robi, chyba że wykryje wiodące zero, wtedy staje się ósemkową. Prosta usterka podczas akceptowania danych wejściowych użytkownika.
Diodeus - James MacFarlane

1
Działa dobrze, o ile określasz podstawę za pomocą drugiego parametru: parseInt("010", 10)zwraca dziesięć.
jahroy

29

Parse int to narzędzie, którego powinieneś tutaj użyć, ale jak każde narzędzie powinno być używane poprawnie. Korzystając z parseInt, należy zawsze używać parametru radix, aby upewnić się, że używana jest poprawna podstawa

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

27

Liczba całkowita jest konwertowana na ciąg znaków, a nie odwrotnie. Chcesz:

var newValue = parseInt(currentValue) + 1

12

parseInt nie działa dla mnie w IE. Więc po prostu użyłem + na zmiennej, którą chcesz jako liczbę całkowitą.

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

4

Jeśli chodzi o ósemkową błędną interpretację .js - właśnie użyłem tego ...

parseInt(parseFloat(nv))

i po sprawdzeniu z zerami na początku, za każdym razem wracał z poprawną reprezentacją.

mam nadzieję że to pomoże.


2

Twój kod powinien wyglądać tak:

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

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

Hacks N Tricks


1

aby zwiększyć o jeden, możesz zrobić coś takiego

  var newValue = currentValue ++;

8
Z pewnością ++ currentValue?
Marcin

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

Po prostu rozwiązałem problem z miesiącem, tablica getMonth zaczyna się od 0 do 11.


1

Po prostu dodaj znak plus przed wartością tekstową

var newValue = +currentValue + 1;

1

Możesz pomnożyć zmienną przez 1, aby zmusić JavaScript do konwersji zmiennej na liczbę za Ciebie, a następnie dodać ją do innej wartości. Działa to, ponieważ mnożenie nie jest przeciążone tak jak dodawanie. Niektórzy mogą powiedzieć, że jest to mniej jasne niż parseInt, ale jest to sposób na zrobienie tego i nie zostało jeszcze wspomniane.


-1

Możesz użyć metody parseInt (), aby przekonwertować ciąg znaków na liczbę całkowitą w javascript

Po prostu zmieniasz kod w ten sposób

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

Czym różni się to od powyższej odpowiedzi (która została opublikowana około 10 lat temu)?
Code Maniac
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.