使用带有小数的Javascript从输入框值中获取总和

时间:2016-01-15 07:17:38

标签: javascript html

我从另一个答案复制了这个,但它确实有效,但我需要得到小数后面的两个数字。这一轮...

Qty1 : <input onblur="findTotal()" type="text" name="qty" id="qty2"/><br>
Qty2 : <input onblur="findTotal()" type="text" name="qty" id="qty2"/><br>
Qty3 : <input onblur="findTotal()" type="text" name="qty" id="qty3"/><br>
Qty4 : <input onblur="findTotal()" type="text" name="qty" id="qty4"/><br>
Qty5 : <input onblur="findTotal()" type="text" name="qty" id="qty5"/><br>
Qty6 : <input onblur="findTotal()" type="text" name="qty" id="qty6"/><br>
Qty7 : <input onblur="findTotal()" type="text" name="qty" id="qty7"/><br>
Qty8 : <input onblur="findTotal()" type="text" name="qty" id="qty8"/><br>

Total : <input type="text" name="total" id="total"/>

<script type="text/javascript">
function findTotal(){
var arr = document.getElementsByName('qty');
var tot=0;
for(var i=0;i<arr.length;i++){
    if(parseInt(arr[i].value))
        tot += parseInt(arr[i].value);
}
document.getElementById('total').value = tot;
}

</script>

4 个答案:

答案 0 :(得分:2)

将脚本替换为以下内容:

<script type="text/javascript">
function findTotal(){
var arr = document.getElementsByName('qty');
var tot=0;
for(var i=0;i<arr.length;i++){
    if(parseFloat(arr[i].value))
        tot += parseFloat(arr[i].value).toFixed(2);
}
document.getElementById('total').value = tot;
}

</script>

答案 1 :(得分:1)

Qty1 : <input onblur="findTotal()" type="text" name="qty" id="qty2"/><br>
Qty2 : <input onblur="findTotal()" type="text" name="qty" id="qty2"/><br>
Qty3 : <input onblur="findTotal()" type="text" name="qty" id="qty3"/><br>
Qty4 : <input onblur="findTotal()" type="text" name="qty" id="qty4"/><br>
Qty5 : <input onblur="findTotal()" type="text" name="qty" id="qty5"/><br>
Qty6 : <input onblur="findTotal()" type="text" name="qty" id="qty6"/><br>
Qty7 : <input onblur="findTotal()" type="text" name="qty" id="qty7"/><br>
Qty8 : <input onblur="findTotal()" type="text" name="qty" id="qty8"/><br>

Total : <input type="text" name="total" id="total"/>

<script type="text/javascript">
function findTotal(){
var arr = document.getElementsByName('qty');
var tot=0;
for(var i=0;i<arr.length;i++){
    if(parseFloat(arr[i].value))       // parseFloat() instead of parseInt()
        tot += parseFloat(arr[i].value);    // parseFloat() instead of parseInt()
}
document.getElementById('total').value = tot;
}

</script>

答案 2 :(得分:1)

function findTotal(){
var arr = document.getElementsByName('qty');
var tot=0;
for(var i=0;i<arr.length;i++){
if(parseFloat(arr[i].value))       // parseFloat() instead of parseInt()
    tot += parseFloat(arr[i].value);    // parseFloat() instead of parseInt()
}
document.getElementById('total').value = tot.toFixed(2);
}

答案 3 :(得分:0)

而不是parseInt使用parseFloat。然后使用toFixed()仅显示2位小数。