我想在每一本书检查时加上一些书的价格,但我有问题。 它只是添加一个字符串。例如,当我选择一本书(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>
标签......
感谢您的解决方案;)
答案 0 :(得分:1)
这是因为你要连接字符串,而不是添加数字。 '10'+'20'给出'1020'而不是30。
尝试:
document.getElementById('price').innerHTML=parseInt(document.getElementById('price').innerHTML)+10;
请注意这一点,只有当您的p
标记只包含其HTML中的数字时才会有效。 parseInt('10$')
代表10
但parseInt('$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);