Вопрос:

Как увеличить числовую строку на +1 с помощью Javascript / jQuery

javascript jquery

31613 просмотра

8 ответа

808 Репутация автора

У меня есть следующая переменная:

pageID = 7

Я хотел бы увеличить это число по ссылке:

$('#arrowRight').attr('href', 'page.html?='+pageID);

Таким образом, это выводит 7, я хотел бы добавить ссылку, чтобы сказать 8. Но если я добавлю +1:

$ ('# arrowRight'). attr ('href', 'page.html? =' + pageID + 1);

Я получаю следующий вывод: 1.html? = 71 вместо 8.

Как я могу увеличить этот номер до pageID + 1?

Автор: JayDee Источник Размещён: 02.07.2012 01:50

Ответы (8)


29 плюса

24699 Репутация автора

Решение

Попробуй это:

parseInt(pageID, 10) + 1

Согласие с вашим кодом:

$('#arrowRight').attr('href', 'page.html?='+ (parseInt(pageID, 10) + 1));
Автор: antyrat Размещён: 02.07.2012 01:51

2 плюса

1900 Репутация автора

Это должно быть целое число, а не строка. Попробуй это:

pageID = parseInt(pageID)+1;

Тогда вы можете сделать

$('#arrowRight').attr('href', 'page.html?='+pageID);
Автор: ninja Размещён: 02.07.2012 01:52

0 плюса

9365 Репутация автора

Просто, $('#arrowRight').attr('href', 'page.html?='+(pageID+1));

В скобках вычисление выполняется первым перед объединением строк.

Автор: Shikiryu Размещён: 02.07.2012 01:54

0 плюса

12871 Репутация автора

Просто измените порядок операций, заключив добавление в круглые скобки; если pageID уже является числом, parseInt () не требуется:

$('#arrowRight').attr('href', 'page.html?='+(pageID+1));
Автор: jackwanders Размещён: 02.07.2012 01:54

0 плюса

10289 Репутация автора

Пока ваш pageID является числовым, этого должно быть достаточно:

$('#arrowRight').attr('href', 'page.html?='+(pageID+1));

Проблема, с которой вы столкнулись, заключается в том, что JavaScript обычно выполняется в порядке слева направо, поэтому строка слева делает +его видимым как конкатенатор, поэтому он добавляет 7 к строке, а затем добавляет 1 к строке, включая 7.

Автор: Brett Zamir Размещён: 02.07.2012 01:55

4 плюса

17699 Репутация автора

+оказывается действительным оператором как для строк, так и для чисел, который дает разные результаты, когда оба аргумента являются числовыми, а когда хотя бы один из них не является. Одним из возможных обходных путей является использование оператора, который имеет только числовой контекст, но дает такой же математический результат, как -. some_var - -1всегда будет таким же, как добавление 1 к some_varчисловому значению, независимо от того, является ли оно строковым или нет.

$('#arrowRight').attr('href', 'page.html?='+ (pageID - -1));
Автор: Oleg V. Volkov Размещён: 02.07.2012 02:05

0 плюса

325 Репутация автора

let pageId = '7'
pageId++
console.log(pageId)

В настоящее время вам просто нужно pageID ++.

Автор: ericchan1336 Размещён: 23.06.2016 03:13

1 плюс

187 Репутация автора

Все эти решения предполагают, что ваш номер, к которому вы хотите добавить 1, находится в пределах точности машины для целого числа. Так что, если у вас есть достаточно большое число в этой строке, когда вы добавляете 1, она не изменит число.

Например:

parseInt('800000000000000000', 10) + 1 = 800000000000000000

Поэтому я написал быстрое решение проблемы

function addOne(s) {
    let newNumber = '';
    let continueAdding = true;
    for (let i = s.length - 1; i>= 0; i--) {
        if (continueAdding) {
            let num = parseInt(s[i], 10) + 1;
            if (num < 10) {
                newNumber += num;
                continueAdding = false;
            } else {
                newNumber += '0';
            }
        } else {  
            newNumber +=s[i];
        }
    }
    return newNumber.split("").reverse().join("");
}

Теперь, используя тот же пример выше

addOne('800000000000000000') + 1 = '800000000000000001'

Обратите внимание, что он должен оставаться в виде строки, иначе вы потеряете 1 в конце.

Автор: sookool99 Размещён: 30.05.2017 05:43
Вопросы из категории :
32x32