подведение итогов с использованием jQuery без сложения чисел - PullRequest
1 голос
/ 02 ноября 2010

Я пытаюсь создать промежуточную сумму, но безуспешно, как бы вы это сделали:

var total = 0;
value = $('.price').text();
total += value;
$('#subtotal span').html(total);

Все, что он делает, добавляет следующее значение в «span», а не добавляет цифры вместе!


РЕДАКТИРОВАТЬ: Из содержания ответа, опубликованного ОП.

$('.addtocart').click(function(){
                $('#cart').show();
                var omPartNo = $(this).next().text();
                var supPartNo = $(this).next().next().text();
                var cat = $(this).next().next().next().text();
                var desc = $(this).next().next().next().next().text();
                var manuf = $(this).next().next().next().next().next().text();
                var list = $(this).next().next().next().next().next().next().text();
                var disc = $(this).next().next().next().next().next().next().next().text();
                var priceEach = $(this).next().next().next().next().next().next().next().next().text();
                $('#cart table').append('<tr class="tableRow"><td><a class="removeItem" href="#"><img src="/admin/images/delete.png"></img></a><td>' + omPartNo + '</td><td>' + supPartNo + '</td><td>' + cat + '</td><td>' + desc + '</td><td>' + manuf + '</td><td>' + list + '</td><td>' + disc + '</td><td class="price">' + priceEach + '</td></tr>');
                    var total = 0;
                    value = parseInt($('.price').text(), 10);
                    total += value;
                    $('#subtotal span').html(total);
            });

Это мой полный код. Я думаю, что я делаю это неправильно, это не даст мне промежуточный итог, не так ли?

Любая помощь!?

Ответы [ 3 ]

2 голосов
/ 02 ноября 2010

Я думаю, вам нужно, чтобы .each() здесь проходило по элементам, используя parseFloat() по ходу (так как они являются ценами), например так:

var total = 0;
$('.price').each(function() { total += parseFloat($.text([this]));
$('#subtotal span').html(total.toFixed(2));
0 голосов
/ 02 ноября 2010

Ваш код добавляет только текст из первого элемента в объекте jQuery $('.price'). Если вы хотите, чтобы этот селектор суммировал все элементы, имеющие класс «цена». тогда вы должны использовать функцию jQuery .each для циклического перебора элементов, суммирующих значения.

Также не мешало бы использовать функцию parseInt во время добавления.

0 голосов
/ 02 ноября 2010

Вы можете использовать Number() или + для явного приведения к числу, которое я предпочитаю parseInt() и parseFloat() по нескольким причинам:

value = +$('.price').text();
total += value;
$('#subtotal span').html(total);

Или, аналогично образцу @ Ника, используя каждый:

var total = 0;
$('.price').each(function() { total += +$.text([this]); });
$('#subtotal span').html(total.toFixed(2));

См. Также: Скрытые возможности JavaScript?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...