Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于javascript的动态计算_Javascript_Jquery_Html - Fatal编程技术网

基于javascript的动态计算

基于javascript的动态计算,javascript,jquery,html,Javascript,Jquery,Html,好的,我正在构建一个自定义的在线发票应用程序,在“创建发票”页面上,我将其设置为默认显示一行项目。但是,通过单击“新建行”按钮,它会将行添加到表中以获取更多项。如果您改变主意,也可以删除行 现在,所有这些都工作得很好。我决定更进一步,自动计算每行总计以及整个表的总计。这就是我遇到问题的地方 行总数: 对于行总数,我有以下javascript: function Calculate() { var par = $(this).parent().parent(); var price

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

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

行总数:

对于行总数,我有以下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);
}
如果价格是12.95美元,数量是2,上面的脚本返回25.9美元,我希望它返回25.90美元

总计:从上述函数自动调用

function CalculateTotal(rowTotal) {
    y = $("#Gtotal").text();
    z = rowTotal;
    x = +y + +z;
    $("#Gtotal").text(x);
}
基于上述示例,上述函数也将返回25.9。我还希望返回25.90,如果我将表中的数量更改为0,则总计不会更改。但是如果我将数量更改为2,它将返回38.84999999994,这比我在测试表时发现的问题多得多。我不会在这里列出

因此,您可以清楚地看到,我需要一种更好的方式来处理javascript中的计算。我对javascript不是很有经验,所以任何帮助都会很好。我真的需要javascript中的动态计算


因为我的代码不会以很好的格式复制到这里。我创建了一个JSFIDLE,让您可以查看表的完整代码以及javascript

您可以使用parseFloat将输入值转换为浮点。和parseInt进行整数转换。请务必阅读文档说明它们是如何工作的,尤其是parseInt,不要忘记第二个参数来指定基数

请看是否有小提琴在工作

由于SO需要工作代码,下面是Calculate中的更新行


var total=parseFloatprice*parseFloatqty

将选中的答案与此结合使用:

var someNumber = 99.999923423;

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

将有所帮助。

您可以使用.tofixed您忘记将jquery添加到您的fiddleWhoops。。。检查有问题的更新链接。好的。toFixed2解决了这个问题。但是,如果在任何一行中的初始设置之后更改数量,则总数不符合正确的计算结果。在“总计”文本中需要初始值。请看下面我的答案中的提琴。在你的提琴中,总计似乎没有正确更新。为数量键入1,然后键入2。事实上,这是因为CalculateTotal实现有缺陷。您每次都在增加总计,而不是将单个行项目总计相加…我不太擅长javascript,您能帮我。。。更好的方法是什么?到目前为止,您已经很好地解决了jQuery来完成所需任务的问题。我鼓励您根据自己的一般提示完成其余工作,以使您走上正确的轨道:每次价格或数量文本框发生变化时,更新总计。因此,在这些输入框上创建jQuery事件处理程序的一种方法是为它们设置自己的css类。您也可以直接使用change。最好的