Javascript:为什么这会产生丑陋的字符串??? 我想要货币

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”。 我究竟做错了什么? 我想格式化为货币,但如果不是,至少只是两位十进制数。 有什么指针吗?

谢谢,〜在圣地亚哥

.toFixed将对象从Number转换为String。

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

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

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

 total = total + + tmp; 

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

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

它的用法会减少你的脚本:

 $('.total').text($('.amount').sum()); 

您正在将parseFloat转换为字符串,然后将其添加到total。 一旦添加了内容,只需将.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);