我不熟悉javascript,如果这是一项简单的任务,请道歉。
我正在尝试使用复选框通过HTML表单选择的选项更新总数,但我遇到了数字格式的问题。我有这个工作,但我有格式问题。当前行为是没有显示小数点,但功能是正确的。如果我将parseInt
更改为parseFloat
,我会得到小数点,但如果我选中并取消选中项目,则会添加许多小数点。如果我添加两个项目,那将给我一个5.90的数字,它只显示5.9而不是5.90。
理想的行为是只有2个小数点(我不知道为什么它甚至会显示像2.95000001这样的东西),当数量为5.90时它显示正确而不是5.9
到目前为止,这是我的代码
<head>
<script type="text/javascript">
var total = 0;
function test(item){
if(item.checked){
total+= parseInt(item.value);
}else{
total-= parseInt(item.value);
}
//alert(total);
document.getElementById('Totalcost').innerHTML = total;
}
</script>
</head>
<body>
<label>
<input type="checkbox" value="2.95" onClick="test(this);" />Product 1</label>
<label>
<input type="checkbox" value="2.95" onClick="test(this);" />Product 2</label>
<h3>Total Amount : $<span id="Totalcost"> </span></h3>
谢谢。
编辑:我也尝试改变这一行:
total-= parseInt(item.value);
到这个
total-= parseInt(item.value).toFixed(2);
但它只是将金额添加到总数的末尾而不是将它们相加(如此输出:总金额:£02.002.002.00
答案 0 :(得分:1)
toFixed(2)我认为你需要的是
https://www.w3schools.com/jsref/jsref_tofixed.asp
<head>
<script type="text/javascript">
var total = 0;
function test(item){
if(item.checked){
total+= parseFloat(item.value);
}else{
total-= parseFloat(item.value);
}
//alert(total);
document.getElementById('Totalcost').innerHTML = total.toFixed(2);
}
</script>
</head>
<body>
<label>
<input type="checkbox" value="2.95" onClick="test(this);" />Product 1</label>
<label>
<input type="checkbox" value="2.95" onClick="test(this);" />Product 2</label>
<h3>Total Amount : $<span id="Totalcost"> </span></h3>
答案 1 :(得分:1)
如果你想在&#34;之后只有2个十进制数字。&#34;你可以试试这段代码
var total = 0;
function test(item){
if(item.checked){
total+= parseFloat(item.value)
}else{
total-= ParseFloat(item.value)
}
//alert(total);
document.getElem
entById('Totalcost').innerHTML = total.toFixed(2);
}