在 Javascript 中添加数字时遇到麻烦

Trouble with adding numbers in Javascript?

本文关键字:遇到 麻烦 数字 添加 Javascript      更新时间:2023-09-26

我想在检查每本书时添加一些书的价格,但我有一个问题。它只是添加一个字符串。例如,当我选择一本书(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>标签...感谢您的解决方案;)

这是因为您正在连接字符串,而不是添加数字。"10"+"20"给出"1020"而不是30。

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

不过要小心,只有当您的p标签在其 HTML 中只有数字时,它才会起作用。 parseInt('10$')给了10,但parseInt('$10')给了NaN。您可以尝试使用数字类型输入标签。

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

InnerHTML 是一个字符串。+ 运算符也是 JavaScript 中的 String 连接运算符。因此,首先"铸造"值。

在 JavaScript 中"转换"数字字符串的简单方法:乘以 1:

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

或者,使用 Number 构造函数:

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