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