Подтвердить что ты не робот

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

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

pageID = 7

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

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

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

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

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

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

4b9b3361

Ответ 1

Попробуйте следующее:

parseInt(pageID, 10) + 1

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

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

Ответ 2

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

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

Ответ 3

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

pageID = parseInt(pageID)+1;

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

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

Ответ 4

Все эти решения предполагают, что ваш номер, который вы хотите добавить 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'

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

Ответ 5

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

Скобки заключают вычисления сначала перед конкатенацией строк.

Ответ 6

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

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

Ответ 7

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

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

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

Ответ 8

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