我有以下变量:
pageID = 7
我想在链接上增加这个数字:
$('#arrowRight').attr('href', 'page.html?='+pageID);
所以这输出7,我想附加链接说8.但如果我加+1:
$('#arrowRight')。attr('href','page.html?='+ pageID + 1);
我得到以下输出:1.html?= 71而不是8。
如何将此数字增加为pageID + 1?
答案 0 :(得分:28)
试试这个:
parseInt(pageID, 10) + 1
根据你的代码:
$('#arrowRight').attr('href', 'page.html?='+ (parseInt(pageID, 10) + 1));
答案 1 :(得分:4)
+
恰好是字符串和数字的有效运算符,当两个参数都是数字且至少有一个不是时,它们会产生不同的结果。一种可能的解决方法是使用仅具有数字上下文但提供相同数学结果的运算符,如-
。 some_var - -1
始终与向some_var
的数字值添加1相同,无论它是否为字符串。
$('#arrowRight').attr('href', 'page.html?='+ (pageID - -1));
答案 2 :(得分:2)
它必须是整数,而不是字符串。试试这个:
pageID = parseInt(pageID)+1;
然后你可以做
$('#arrowRight').attr('href', 'page.html?='+pageID);
答案 3 :(得分:1)
所有这些解决方案都假设您要添加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。
答案 4 :(得分:0)
简单地说,$('#arrowRight').attr('href', 'page.html?='+(pageID+1));
括号在字符串连接之前首先完成计算。
答案 5 :(得分:0)
只需在括号中包含附加内容即可更改操作顺序;如果pageID已经是数字,则不需要parseInt():
$('#arrowRight').attr('href', 'page.html?='+(pageID+1));
答案 6 :(得分:0)
只要您的pageID是数字,这就足够了:
$('#arrowRight').attr('href', 'page.html?='+(pageID+1));
您遇到的问题是JavaScript通常以从左到右的顺序执行,因此左侧的字符串会导致+
被视为连接符,因此它将7添加到字符串中,然后在字符串中加1,包括7。
答案 7 :(得分:0)
let pageId = '7'
pageId++
console.log(pageId)
如今,你只需要pageID ++。