在Javascript中添加数字有问题吗?

时间:2013-12-14 19:33:00

标签: javascript

我想在每一本书检查时加上一些书的价格,但我有问题。 它只是添加一个字符串。例如,当我选择一本书(10 $)时,价格变为10,当我选择另一本书(20 $)时,它变为1020,依此类推......

我的代码:  对于第一本书:

<input 
  name="bookList" 
  type="checkbox" 
  id="bookList_1" 
  onChange="
    if (document.getElementById('bookList_1').checked) {
    document.getElementById('priceDes').innerHTML='  total:  ';
    document.getElementById('price').innerHTML+=10;
    }
  " 
  value="book1"
> 

第二本书:

<input 
  name="bookList" 
  type="checkbox" 
  id="bookList_2" 
  onChange="
    if (document.getElementById('bookList_2').checked) {
      document.getElementById('priceDes').innerHTML='  total:  ';
      document.getElementById('price').innerHTML+=20;
    }
  " 
  value="book1"
> 

价格和价格Des是<p>标签...... 感谢您的解决方案;)

3 个答案:

答案 0 :(得分:1)

这是因为你要连接字符串,而不是添加数字。 '10'+'20'给出'1020'而不是30。

尝试: document.getElementById('price').innerHTML=parseInt(document.getElementById('pr‌​ice').innerHTML)+10;

请注意这一点,只有当您的p标记只包含其HTML中的数字时才会有效。 parseInt('10$')代表10parseInt('$10')代表NaN。您可以试用number-type input代码。

答案 1 :(得分:0)

document.getElementById('price').innerHTML=Number(document.getElementById('price').innerHTML)+20;

答案 2 :(得分:-1)

InnerHTML是一个字符串。 +运算符也是JavaScript中的String连接运算符。所以,首先“抛出”这些值。

在JavaScript中“强制转换”数字字符串的简便方法:乘以1:

var rv = 1*a.innerHTML + 1*b.innerHTML;

或者,使用Number构造函数:

var rv = Number(a.innerHTML) + Number(b.innerHTML);