从计算的总数中减去一个整数

时间:2012-09-20 02:04:33

标签: javascript math

我已经建立了一个脚本来添加数量/单位并生成一个显示销售税的总额。

如何计算并添加商品及服务税(10%销售税)前,此计算器能够识别#discount并从总计中扣除?

此外,是否可以在页面加载时生成总计?而不是用户必须按“生成总计”按钮?

HTML

<ul>
<li> Item 1 (<input type="text" name="others" size="4" value="5" readonly="readonly" class="readonly_field"/> units)</li>
<li> Item 2 (<input type="text" name="others" size="4" value="1" readonly="readonly" class="readonly_field"/> units)</li>
<li> Item 3 (<input type="text" name="others" size="4" value="3" readonly="readonly" class="readonly_field"/> units)</li>
</ul>


<input type="button" value="Generate Total" onclick="total()"  /><br><br>

Discount <input type="text" id="discount" name="discount" value="500"/><br><br>

Total Units: <input type="text" id="units_total" name="units_total" readonly="readonly" /><br>
Sub Total: <input type="text" id="sub_total" name="sub_total" readonly="readonly" /><br>
Includes GST: <input type="text" id="gst_total" name="gst_total" readonly="readonly" /><br>
Total: <input type="text" id="g_total" name="g_total" readonly="readonly" />

JS

function total(){
var total_value = 0;
var all_others = document.getElementsByTagName("input");

for(var i=0; i<all_others.length; i++){
if(all_others[i].type!="text" || all_others[i].name!="others"){
    continue;
}
total_value += parseFloat(all_others[i].value);
}

document.getElementById("units_total").value = (total_value).toFixed(1);

document.getElementById("sub_total").value = ((total_value) *100).toFixed(2);

document.getElementById("g_total").value = (((total_value * 10/100) + total_value) * 100).toFixed(2);

document.getElementById("gst_total").value = ((total_value * 10/100) * 100).toFixed(2);
}

2 个答案:

答案 0 :(得分:1)

首先,要使您的函数在窗口加载时执行,请将其包装在load事件中:

window.onload = function() {
    total();
}

其次,为了让它在折扣中计算,你只需要修改你的变量几次,但是当它们一起添加时,请确保用.parseFloat()解析它们:

if (document.getElementById('discount').value != '') {
    var discount = document.getElementById('discount').value;
}
else {
    var discount = 0;
}
var sub_total = (((total_value) * 100).toFixed(2) - discount).toFixed(2);
var gst = ((total_value * 10 / 100) * 100).toFixed(2);

document.getElementById("sub_total").value = sub_total;

document.getElementById("gst_total").value = gst;

document.getElementById("g_total").value = (parseFloat(sub_total) + parseFloat(gst)).toFixed(2);

DEMO

答案 1 :(得分:0)

首先,我建议您在服务器端和客户端执行验证和计算。第一个确保安全性,第二个提高UI的响应性。

说,你最好引入几个支持变量并对它们进行计算。您应该使用getElementById从您感兴趣的元素中获取值并将其存储在变量中。 然后,您应该对这些变量执行计算,最后将结果放在要用于向用户显示的元素中。

要在页面加载时执行操作,请查看this