Как добавить целочисленное значение с помощью javascript (jquery) к значению, возвращающему строку?

92

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

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

Используя jquery, я пытаюсь добавить 1 к значению (8).

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

Что происходит, это выглядит так:

81 год

тогда

811

а не 9, что было бы правильным ответом. Что я делаю не так?

Rball
источник

Ответы:

187

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

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

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

Диодей - Джеймс Макфарлейн
источник
10
Будьте осторожны с parseInt (), он распознает «010» как 9 (значения, начинающиеся с нуля, анализируются как восьмеричные).
MightyE
3
Bleh, «010» разбирается как 8 (а не 8)
MightyE
7
@ Джейкоб Релкин: Поскольку это было полезно, я просто поставил ему еще +1. Если вы знаете ответ получше, жаль, что вы не поделились им.
Аневс считает SE злом
1
Это происходит, если не обнаруживается начальный ноль, тогда он становится восьмеричным. Простой глюк при принятии пользовательского ввода.
Диодей - Джеймс Макфарлейн
1
Он работает нормально, если вы укажете основание системы счисления с помощью второго параметра: parseInt("010", 10)возвращает десять.
jahroy
29

Parse 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

Просто добавьте знак плюса перед текстовым значением

var newValue = +currentValue + 1;
Агоррека
источник
1

Вы можете умножить переменную на 1, чтобы заставить JavaScript преобразовать переменную в число за вас, а затем добавить его к другому значению. Это работает, потому что умножение не перегружено, как сложение. Некоторые могут сказать, что это менее понятно, чем parseInt, но это способ сделать это, и о нем еще не упоминалось.

Райан
источник
-1

Вы можете использовать метод parseInt () для преобразования строки в целое число в javascript

Вы просто меняете код вот так

$("replies").text(parseInt($("replies").text(),10) + 1);
Codemaker
источник
Чем это отличается от опубликованного выше ответа (опубликованного около 10 лет назад)?
Code Maniac