Ответ 1
Попробуйте следующее:
parseInt(pageID, 10) + 1
Согласование с кодом:
$('#arrowRight').attr('href', 'page.html?='+ (parseInt(pageID, 10) + 1));
У меня есть следующая переменная:
pageID = 7
Я хотел бы увеличить этот номер по ссылке:
$('#arrowRight').attr('href', 'page.html?='+pageID);
Итак, это выводит 7, я хотел бы добавить ссылку, чтобы сказать 8. Но если я добавлю +1:
$('# arrowRight'). attr ('href', 'page.html? =' + pageID + 1);
Я получаю следующий вывод: 1.html? = 71 вместо 8.
Как я могу увеличить это число на pageID + 1?
Попробуйте следующее:
parseInt(pageID, 10) + 1
Согласование с кодом:
$('#arrowRight').attr('href', 'page.html?='+ (parseInt(pageID, 10) + 1));
+
является действительным оператором для обеих строк и чисел, который дает разные результаты, когда оба аргумента являются числовыми и когда по крайней мере один не является. Одним из возможных обходных путей является использование оператора, который имеет только числовой контекст, но дает тот же математический результат, например -
. some_var - -1
всегда будет таким же, как добавление от 1 до some_var
числового значения, независимо от того, является ли оно строкой или нет.
$('#arrowRight').attr('href', 'page.html?='+ (pageID - -1));
Он должен быть целым числом, а не строкой. Попробуйте следующее:
pageID = parseInt(pageID)+1;
Затем вы можете сделать
$('#arrowRight').attr('href', 'page.html?='+pageID);
Все эти решения предполагают, что ваш номер, который вы хотите добавить 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'
Обратите внимание, что он должен оставаться в виде строки или вы потеряете это в конце.
Просто $('#arrowRight').attr('href', 'page.html?='+(pageID+1));
Скобки заключают вычисления сначала перед конкатенацией строк.
Просто измените порядок операций, добавив добавление в круглые скобки; если pageID уже является числом, parseInt() не требуется:
$('#arrowRight').attr('href', 'page.html?='+(pageID+1));
Пока ваш идентификатор страницы является числовым, этого должно быть достаточно:
$('#arrowRight').attr('href', 'page.html?='+(pageID+1));
Проблема, которую вы видели, заключается в том, что JavaScript обычно выполняется в порядке слева направо, поэтому строка слева приводит к тому, что +
рассматривается как конкатенатор, поэтому он добавляет 7 к строке, а затем добавляет 1 к строке, содержащей 7.
let pageId = '7'
pageId++
console.log(pageId)