使用javascript进行动态计算

时间:2014-05-05 02:36:17

标签: javascript jquery html

好的,我正在构建一个自定义在线发票应用程序,在创建发票页面上,我已将其设置为默认显示一行项目。但是通过单击“新行”按钮,它会向表中添加行以获取更多项目。如果你改变主意,你也可以删除行。

现在,以上所有工作都很好。我决定更进一步,自动计算每一行(行总数)以及整个表(总计)的总计。这是我遇到问题的地方。

Line Total:

我总共有以下javascript:

function Calculate() {
    var par = $(this).parent().parent();
    var price = $(par).find('input#price').val();
    var qty = $(this).val();
    var total = price*qty;
    $(par).find('input#total').val(total);
    CalculateTotal(total);
}

如果price$12.95qty2,则上述脚本会返回25.9我希望它返回$25.90而不是Grand Total:

function CalculateTotal(rowTotal) { y = $("#Gtotal").text(); z = rowTotal; x = +y + +z; $("#Gtotal").text(x); } (自动从上述功能调用)

25.9

基于上面的示例,上述函数也将返回25.90。我还想要返回0如果我将表中的数量更改为2,则总计不会更改。但是,如果我将qty更改为38.849999999999994,它将返回dynamic calculations in javascript它在测试表时遇到了更多问题。我不会在此列出。

很明显你可以看到,我需要一种更好的方法来处理javascript中的计算。我在javascript方面不是很有经验,所以任何帮助都会非常好。我真的需要{{1}}

因为我的代码不会以漂亮的格式复制到这里。我创建了一个jsFiddle,允许您查看表格的完整代码以及我的javascript。 CLICK HERE TO SEE FIDDLE

2 个答案:

答案 0 :(得分:0)

您可以使用parseFloat将输入值转换为浮点值。和parseInt进行整数转换。请务必阅读文档的工作原理(特别是parseInt,不要忘记指定基数的第二个参数)。

请参阅http://jsfiddle.net/vCs6E/6/了解工作小提琴。

由于SO需要工作代码,因此这里是Calculate()

中的更新行

var total = parseFloat(price) * parseFloat(qty);

答案 1 :(得分:0)

使用选中的答案和它:

var someNumber = 99.999923423;

// shows  99.99
console.log(someNumber.toFixed(2)); 

会有所帮助。