0

我这里有以下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 的建议......但它只返回 0.00 的值

我将我的值设置为 0.67、1.33、2.67 等等。

4

2 回答 2

3

您必须toFixed在打印值之前立即申请,而不是在开始时申请:

$('#total_potential').html(Math.min(sum,72).toFixed(2));

那是因为toFixed不限制数字变量的小数位数,它只是一个格式化函数,它接受一个数字并返回一个字符串,该数字用这么多小数位格式化。所以它应该只用于输出。

于 2013-07-19T18:03:44.207 回答
1

我相信当你在做:

sum += parseInt(elm.value, 10);

它正在改变类型。您应该toFixed在函数结束时进行调用。

编辑

解决OP的进一步问题。

@webfrogs 如果您最终得到 .00 的结果,我会对您的代码中可能出错的事情做出两个猜测。(1)您正在使用parseIntwhich 为您提供 0 的值,例如 .67 (不确定这是否是您想要的)和(2)变量sum可能不在同一范围内,您可以确保正确的变量通过显式传递上下文来使用。IE

$('#CourseMenu select').each(function(idx, elm) {
        sum += parseInt(elm.value, 10);
    }).bind(this);
于 2013-07-19T18:06:24.713 回答