Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何通过+;1使用Javascript/jQuery_Javascript_Jquery - Fatal编程技术网

如何通过+;1使用Javascript/jQuery

如何通过+;1使用Javascript/jQuery,javascript,jquery,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?试试这个: parseInt(pageID, 10) + 1 pageID

我有以下变量:

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
pageID = parseInt(pageID)+1;
根据您的代码:

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

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

pageID = parseInt(pageID)+1;
那你就可以了

$('#arrowRight').attr('href', 'page.html?='+pageID);
简单地说,
$('#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的字符串中。

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

$('#arrowRight').attr('href', 'page.html?='+ (pageID - -1));
让pageId='7'
页面ID++

console.log(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("");
}

请注意,它必须保留为字符串,否则在结尾将丢失该1。

是的,但在上下文中:
'page.html?+(parseInt(pageID,10)+1)
-必须将子表达式括起来。如果pageID已经是整数,则不需要parseInt,这是OP的问题。您不必对一个数字调用
parseInt
来增加它,只是想指出,此解决方案不适用于大于整数大小的字符串,因此parseInt('8000000000000000',10)+1=8000000000000000,这不是您想要的。请确保将第二个参数传递给
parseInt
(10),以便像“08”和“09”这样的值可以正常工作。非常正确,通常不适用于以“0”开头的值,因此出于习惯,我将其忽略。接得好!“如何使用jQuery添加两个数字”这一几乎完美的例子不再是一个笑话!