JavaScript: Почему это производит и уродливая строка ??? Я бы хотел валюту

StackOverflow https://stackoverflow.com/questions/1214201

Вопрос

 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);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top