6
var total = 0;
$(".amount").each(function () {
    var value = $(this).val();
    value = (value.length < 1) ? 0 : value;
    var tmp = parseFloat(value).toFixed(2);
    total += tmp;
});
$(".total").text(total);

我正在尝试遍历一些文本框并总结它们的值。这会产生一个讨厌的字符串。我错过了什么??如果我在第一个文本框中输入 8,则总文本最终为“08.000.000.000.00”。我究竟做错了什么?我想格式化为货币,但如果不是,至少只有两位小数。任何指针?

4

3 回答 3

13

.toFixed 将对象从数字转换为字符串。

保留完整值并仅在最后使用 .toFixed 进行转换

$(".total").text(total.toFixed(2));

或者,将字符串转换回数字。

total = total + + tmp;
于 2009-07-31T18:56:50.197 回答
1

仅供参考,jQuery 有一个出色的数学聚合插件:jQuery Calculation

使用该插件也可以间接解决您的问题。

它的用法会将您的脚本减少到:

$('.total').text($('.amount').sum());
于 2009-07-31T19:07:05.730 回答
0

您正在将 parseFloat 转换为字符串,然后将其添加到总数中。仅在添加内容后将 .toFixed(2) 添加到最后一行。

var total = 0;
$(".amount").each(function() {
    var value = $(this).val();
    value = (value.length < 1) ? 0 : value;
    var tmp = parseFloat(value);
    total += tmp;
});
$(".total").text(total).toFixed(2);
于 2009-07-31T19:13:17.683 回答