Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/364.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_Asp.net - Fatal编程技术网

Javascript 计算文本框中的总值

Javascript 计算文本框中的总值,javascript,asp.net,Javascript,Asp.net,我的ASP.Net页面上有一个屏幕,根据用户的选择,屏幕上有1到5个文本框。这些框允许用户输入金额 当用户根据特定条件进入屏幕时,将显示特定数量的编辑框。它们不是隐藏的。。。如果我想要3个盒子,那么屏幕上只有3个盒子 在javascript中,当用户键入金额时,会显示一个“总计”编辑框,将每个框中的值相加 因此,当用户键入时,total中的值将更新为所有文本框的计算总数: 我使用: onkeyup="calculateTotal()" 在编辑框上 为此,我使用以下代码: function ca

我的ASP.Net页面上有一个屏幕,根据用户的选择,屏幕上有1到5个文本框。这些框允许用户输入金额

当用户根据特定条件进入屏幕时,将显示特定数量的编辑框。它们不是隐藏的。。。如果我想要3个盒子,那么屏幕上只有3个盒子

在javascript中,当用户键入金额时,会显示一个“总计”编辑框,将每个框中的值相加

因此,当用户键入时,total中的值将更新为所有文本框的计算总数:

我使用:

onkeyup="calculateTotal()"
在编辑框上

为此,我使用以下代码:

function calculateTotal() {

        var amt0 = $('.txtAmount0').val();
        var amt1 = $('.txtAmount1').val();
        var amt2 = $('.txtAmount2').val();
        var amt3 = $('.txtAmount3').val();
        var amt4 = $('.txtAmount4').val();


        var amt = Number(amt0);
        if (!isNaN(amt1))
            amt += Number(amt1);

        if (!isNaN(amt2))
            amt += Number(amt2);

        if (!isNaN(amt3))
            amt += Number(amt3);

        if (!isNaN(amt4))
            amt += Number(amt4);

        $('.txtTotalAmount').text('$' + amt);

    }
第一个问题是,我似乎在计算中失去了一些精度:

我不知道为什么我会遇到一个奇怪的取整问题,而我所做的只是总结

此外,它似乎有点脏,如果我添加更多的框,我需要修改代码


有没有更好的方法来运行此代码?

您可以这样做:

  var sum = 0;
  $("input[class*='txtAmount']").each(function() {
           if ($.isNumeric($(this).val()) ) {
        sum += Number($(this).val());
        }
    });

   $('.txtTotalAmount').text('$' + sum.toFixed(2));

请学习使用循环…您已经发现了IEEE 754数字的限制。;-)肯定有人能找到一个好的副本吗?你的答案应该包括为什么OP有问题,为什么你的答案是固定的。我只是告诉他如何做得更好,这还不够吗?我不打算讨论关于组织单位主题的十进制基金会- CPU计算,关于硕士学位。@Craig你也可以在每次求和后使用toFixed作为数字(…)有自己的定义,你希望在下一次看到它。OP并不知道为什么会出现这个问题。您只需要说ECMAScript使用的IEEE 754值不能准确地表示所有小数点,但将最终结果四舍五入到小数点后2位就可以解决这个问题。