2013-07-19 2 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

Я поставил мои ценности в .67, 1.33, 2.67, и так далее.

+2

.toFixed преобразует ваш номер в строку. вы тогда ничего не делаете с переменной, которую вы сохранили в 'fixed' –

+2

Вы ничего не делаете с' fixed'. – Barmar

ответ

1

Я считаю, что когда вы делаете:

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

Это изменение типа. Вы должны сделать вызов toFixed в конце функции.

EDIT

Для решения дальнейших вопросов от ОП.

@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