Помогите с .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, время: 18:27. |