2012-07-02 117 views
13

增加一个数字字符串我有以下变量:如何通过+1使用Javascript/jQuery的

pageID = 7 

我想增加一个链接,这个数字:

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

所以这输出7,我想附加链接说8,但如果我加1:

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

我得到以下输出:1.HTML的8

= 71,而不是我怎么能增加这一数字将PAGEID + 1?

+2

几乎是一个完美的例子,“如何用jQuery添加两个数字”不再是一个笑话! –

回答

26

试试这个:

parseInt(pageID, 10) + 1 

Accordint到您的代码:

​​
+0

是的,但在上下文中:''page.html?' +(parseInt(pageID,10)+ 1)' - 子表达式必须加括号。 – Pointy

+0

我知道,编辑我的答案已经 – antyrat

+0

如果pageID已经是一个整数,parseInt是不需要的,这是OP的问题。你不必在数字上调用parseInt来增加它 – jackwanders

1

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

pageID = parseInt(pageID)+1; 

然后,你可以做

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

确保将第二个参数传递给'parseInt'(10),以便像“08”和“09”这样的值正常工作。 – Pointy

+0

非常真实,通常不会使用以'0'开头的值,因此出于习惯,我将它排除在外。好的赶上! – ninja

0

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

括号使字符串连接之前先进行计算。

+0

对downvoters:为什么? – Shikiryu

0

只需改变您的操作顺序,将括号内的内容包括在内;如果pageid是已经是一个数字,parseInt函数()是没有必要的:

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

有人会关心解释这些downvotes?下面是一个演示,很好地显示了这种方法的工作原理:http://jsfiddle.net/jackwanders/KX9Q8/ – jackwanders

0

只要你的pageid是数字,这应该是足够了:

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

你看到的问题是,JavaScript的通常执行左到右的顺序,所以在左侧的字符串使得被看作是一个连接符的+,所以它增加了7到字符串,然后加1包括串7.

4

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

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

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

现在,你只需要PAGEID ++。

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。