JavaScript: Почему это производит и уродливая строка ??? Я бы хотел валюту
-
06-07-2019 - |
Вопрос
var total = 0;
$(".amount").each(function() {
var value = $(this).val();
value = (value.length < 1) ? 0 : value;
var tmp = parseFloat(value).toFixed(2);
total += tmp;
});
$(".total").text(total);
Я пытаюсь пройти через некоторые текстовые поля и подвести итог их значений. Это создает неприятную струну. Чего мне не хватает ?? Если я положил 8 в первый текстовый текст общего текста как «08.000.000.000.00». Что я делаю не так? Я хотел бы форматировать как валюту, но если нет, по крайней мере, только два десятичного числа. Есть указатели?
Спасибо, ~ ck в Сан -Диего
Решение
.tofixed преобразует объект из числа в строку.
Оставьте полные значения на месте и конвертируйте только с использованием .tofixed в самом конце
$(".total").text(total.toFixed(2));
В качестве альтернативы преобразовать строку обратно в число.
total = total + + tmp;
Другие советы
Просто к вашему сведению, есть отличный плагин по математической агрегации для jQuery: Расчет jQuery
Использование этого плагина также может косвенно решить вашу проблему.
Это использование уменьшит ваш сценарий:
$('.total').text($('.amount').sum());
Вы преобразуете Parsefloat в строку, а затем добавляете его в общее количество. Только добавьте .tofixed (2) к финальной линии, как только все будет добавлено.
var total = 0;
$(".amount").each(function() {
var value = $(this).val();
value = (value.length < 1) ? 0 : value;
var tmp = parseFloat(value);
total += tmp;
});
$(".total").text(total).toFixed(2);