我在这里有以下JS ......
$(function($) {
$('#CourseMenu select').change(function() {
var sum = 0;
$('#CourseMenu select').each(function(idx, elm) {
sum += parseInt(elm.value, 10);
});
$('#total_potential').html(Math.min(sum,72).toFixed(2));
});
});
...但是toFixed();工作不正常。在整数之后它没有给我两位小数。
我还应该添加其他东西吗?
我已更新它以反映@bfavaretto建议......但它只返回.00
的值我的值设置为.67,1.33,2.67等。
答案 0 :(得分:3)
您必须在打印值之前应用toFixed
,而不是在开始时:
$('#total_potential').html(Math.min(sum,72).toFixed(2));
这是因为toFixed
不限制数字变量上的小数位数,它只是一个格式化函数,它接受一个数字并返回一个字符串,该字符串的数字格式为这么多小数位。所以它应该只用于输出。
答案 1 :(得分:1)
我相信你在做的时候:
sum += parseInt(elm.value, 10);
正在改变类型。您应该在函数末尾进行toFixed
调用。
修改强>
解决OP的进一步问题。
@webfrogs如果你的结果是.00我会对你的代码可能出错的事情做两次猜测。 (1)你正在使用parseInt
然后给你一个值为0.67(不确定这是你想要的)和(2)变量sum
可能不在在相同的范围内,您可以通过显式传递上下文来确保正在使用正确的变量。即。
$('#CourseMenu select').each(function(idx, elm) {
sum += parseInt(elm.value, 10);
}).bind(this);