Як додати ціле значення за допомогою javascript (jquery) до значення, яке повертає рядок?


91

У мене є простий блок html, такий як:

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

За допомогою jquery я намагаюся додати 1 до значення (8).

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

Те, що відбувається, виглядає так:

81

тоді

811

не 9, що було б правильною відповіддю. Що я роблю не так?

Відповіді:


186

parseInt () змусить його бути цілим числом або буде NaN (не числом), якщо він не може виконати перетворення.

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

Другий параметр (radix) гарантує, що він проаналізований як десяткове число.


10
Будьте обережні з parseInt (), він розпізнає "010" як 9 (значення, що ведуть з нулем, аналізуються як вісімкові).
MightyE

3
Блех, "010" аналізується як 8 (а не 8)
MightyE

7
@Jacob Relkin: Оскільки це було корисно, я просто дав йому ще +1. Якщо ви знаєте кращу відповідь, шкода, що не поділилися нею.
ANeves вважає, що SE є злим

1
Це відбувається, якщо він не виявляє початковий нуль, тоді він стає вісімковим. Простий збій при прийнятті вводу користувача.
Діодей - Джеймс Макфарлейн

1
Він чудово працює, якщо ви вказали радіус за допомогою другого параметра: parseInt("010", 10)повертає десять.
jahroy

29

Синтаксичний розбір int - це інструмент, який слід використовувати тут, але, як і будь-який інший інструмент, його слід використовувати правильно. Використовуючи parseInt, ви завжди повинні використовувати параметр radix, щоб переконатися, що використовується правильна база

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

27

Ціле число перетворюється на рядок, а не навпаки. Ти хочеш:

var newValue = parseInt(currentValue) + 1

12

parseInt не працював для мене в IE. Тому я просто використав + для змінної, яку ви хочете, як ціле число.

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

4

Що стосується вісімкового неправильного тлумачення .js - я щойно використав це ...

parseInt(parseFloat(nv))

і після тестування з провідними нулями повертався щоразу з правильним поданням.

сподіваюся, це допоможе.


2

Ваш код повинен сподобатися:

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

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

Hacks N Tricks


1

для збільшення на одиницю ви можете зробити щось на зразок

  var newValue = currentValue ++;

8
Напевно ++ currentValue?
Marcin

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

Я просто виправив вашу місячну проблему, масив getMonth починається з 0 до 11.


1

Ви можете помножити змінну на 1, щоб змусити JavaScript перетворити змінну в число для вас, а потім додати її до іншого значення. Це працює, оскільки множення не перевантажується, як додавання. Деякі можуть сказати, що це менш зрозуміло, ніж parseInt, але це спосіб зробити це, і про це ще не згадувалося.


0

Просто додайте знак плюс перед текстовим значенням

var newValue = +currentValue + 1;

-1

Ви можете використовувати метод parseInt () для перетворення рядка в ціле число у javascript

Ви просто змінюєте код таким чином

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

Чим це відрізняється від розміщеної вище відповіді (яка розміщена приблизно 10 років тому)?
Code Maniac
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.