20

我有以下变量:

pageID = 7

我想在链接上增加这个数字:

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

所以这输出 7,我想将链接附加到 8。但如果我添加 +1:

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

我得到以下输出:1.html?=71 而不是 8。

如何将此数字增加到 pageID+1?

4

8 回答 8

34

试试这个:

parseInt(pageID, 10) + 1

根据您的代码:

$('#arrowRight').attr('href', 'page.html?='+ (parseInt(pageID, 10) + 1));
于 2012-07-02T13:51:48.343 回答
5

+恰好是字符串和数字的有效运算符,当两个参数都是数字并且至少一个不是数字时,它会给出不同的结果。一种可能的解决方法是使用仅具有数字上下文但给出相同数学结果的运算符,例如-. some_var - -1将始终与将 1 的数值加 1 相同some_var,无论它是否为字符串。

$('#arrowRight').attr('href', 'page.html?='+ (pageID - -1));
于 2012-07-02T14:05:22.917 回答
2

它必须是整数,而不是字符串。试试这个:

pageID = parseInt(pageID)+1;

然后你可以做

$('#arrowRight').attr('href', 'page.html?='+pageID);
于 2012-07-02T13:52:32.737 回答
2

所有这些解决方案都假定您要加 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。

于 2017-05-30T17:43:38.737 回答
1

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

括号使计算首先在字符串连接之前完成。

于 2012-07-02T13:54:41.220 回答
1

只需将添加的内容括在括号中即可更改操作顺序;如果 pageID 已经是一个数字,则不需要 parseInt():

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

演示

于 2012-07-02T13:54:44.430 回答
1

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

如今,您只需要 pageID++。

于 2016-06-23T03:13:08.613 回答
0

只要您的 pageID 是数字,这就足够了:

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

您看到的问题是 JavaScript 通常以从左到右的顺序执行,因此左侧的字符串导致+被视为连接符,因此它将 7 添加到字符串中,然后将 1 添加到字符串中,包括7.

于 2012-07-02T13:55:56.153 回答