如何使用Javascript / jQuery将数字字符串增加+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
将始终与some_var
的数值相加1相同,无论它是否为字符串。
$('#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'
请注意,它必须保留为字符串,否则最后会丢失1。
简单地说, $('#arrowRight').attr('href', 'page.html?='+(pageID+1));
括号在字符串连接之前首先完成计算。
只需在括号中包含添加内容即可更改操作顺序; 如果pageID已经是一个数字,则不需要parseInt():
$('#arrowRight').attr('href', 'page.html?='+(pageID+1));
只要您的pageID是数字,这应该足够了:
$('#arrowRight').attr('href', 'page.html?='+(pageID+1));
您看到的问题是JavaScript通常以从左到右的顺序执行,因此左侧的字符串会将+
视为连接符,因此它将7添加到字符串中,然后将1加到字符串中包括7。
let pageId = '7' pageId++ console.log(pageId)