Помогите с .each()
Подскажите, пожалуйста... Делаю корзину.. можно изменять количество товаров, от этого изменится и стоимость общая.. Мне нужно подсчитать итоговую стоимость. Вот скриншот:
![]() Вот моя функция обработки и вывода значений: function GetPrice(){ var total=0; $(".price span").each(function(i){ total+=parseFloat($(this).text()); //alert($(this).text()); }); $(".total").text("Всего: "+total+" грн."); } .price span - это span с ценой каждого товара в отдельности .total - куда вставлять текст буду Но это все правильно работает один раз.. Если ставлю в обработчик .keyup input-ов, то все перестает работать... Точнее верно работать.. А стоимость постепенно снижается к нулю, что бы я не вводил. Причем я заметил: первый раз все нормально считывается и пишет результат в следующие разы оно проходит на одну сумму меньше, начиная со 2ой, 3ей, 4ой... последней... И в конце концов выдает всегда 8.... Что не так.. помогите, пожалуйста! |
Цитата:
|
alert уже не модно, сейчас используют console.log (firefox, firebug) ;)
и что, console.log($(".price span").length) с каждым запуском уменьшается? |
Полный код JS
Цитата:
function GetPrice(){ var total=0; $(".price span").each(function(i){ total+=parseFloat($(this).text()); //alert($(this).text()); }); $(".total").text("Всего: "+total+" грн."); } $(function(){ $(".delete a").click(function(event){ event.preventDefault(); var product_id=$(this).attr("href"); $.get("ajax.php",{q : "basket", action : "delete", product_id : product_id}, function(data){ window.location.reload(); }); }); $(".p_amount").keyup(function(){ var p = $(this); var product_id=$(this).attr("id"); var amount=$(this).val(); var amount_pattern=/^[\d]{0,}$/; if ((amount_pattern.test(amount)==false || amount==0) && amount!=""){ $(this).val(1); amount=1; } $.get("ajax.php",{q : "basket", action : "get_price", product_id : product_id, amount : amount}, function(data){ p.parent().next().html(data); }); GetPrice(); }); $(".p_amount").change(function(){ if ($(this).val()==""){ $(this).val(1); $(this).keyup(); } }); }); |
Очень интересно, не смог найти ничего и разобраться. Может кто ещё поможет. Не хотелось ба на такой же какахе споткнуться...
|
Ага, фигня какая-то... Я так и не разобрался почему .each работает странно... Решил проблему пересчитыванием суммы заказа на стороне сервера и возвращении ответа вместе с стоимостью товара в формате json... Но возможно же как-то подсчитать на стороне клиента...?
|
Ошибка в подходе. Данные нужно хранить в памяти, а не на странице. На странице они показываются. В данном случае, следовательно, должен быть массив, в котором хранится товар, количество, цена за штуку. Из этих данных уже формируется то, что надо показать на странице.
|
Цитата:
|
Цитата:
Или в куках хранить... |
Часовой пояс GMT +3, время: 14:42. |