我的toFixed();不工作

时间:2013-07-19 18:01:16

标签: javascript jquery tofixed

我在这里有以下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等。

2 个答案:

答案 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);