2013-07-19 44 views
0

我有以下的JS在這裏...My toFixed();不工作

$(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

值我有我的價值設定爲0.67,1.33,2.67,等等。

+2

.toFixed將你的號碼轉換爲字符串。那麼你不會對你在'fixed'中保存的變量做任何事情。 –

+2

你沒有對'fixed'做任何事情。 – Barmar

回答

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); 
+0

我將parseInt更改爲parseFloat,它按照我想要的方式工作。 .67等也是我正在尋找的東西...謝謝。 – webfrogs

3

你有正確的打印值,而不是在開始之前應用toFixed

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

這是因爲toFixed不限制對一些變量的小數位的數量,它只是一個格式化函數接受一個數字並返回一個字符串,該數字格式化爲許多小數位數。所以它應該只用於輸出。

+0

我將我的值設置爲.67,1.33,2.67等等。但它只返回.00的值。爲什麼? – webfrogs