小数点问题以及使用javascript和HTML表单格式化

时间:2017-06-10 17:35:36

标签: javascript html forms

我不熟悉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

2 个答案:

答案 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);
    }