При повторном вызове функции нужно убрать то, что вывелось после первого

Konpolya

Постоялец
Регистрация
23 Окт 2015
Сообщения
91
Реакции
11
Здравствуйте! У меня такая проблема. Когда на сайте нажимаю на кнопку "добавить в корзину товар" выводится эта функция, которая выводит возле корзины надпись "Всего товаров 1 на сумму 1000р";
Но, если добавить еще товар, то вывод будет выглядеть так: "Всего товаров 1 на сумму 1000рВсего товаров 2 на сумму 2000р". То есть повторяться. А мне нужно, чтобы первая надпись стиралась и оставалось только "Всего товаров 2 на сумму 2000р".

Код:
        function addToCart(items) {
            var count = 0, price = 0;
            $.each(items, function (i,e) {
                count = count + parseInt(e.count);
                price = price + parseInt(e.price * e.count);
                var html = '<tr class="cart_pr_it"><td class="cart_pr_im"><a href="/' + e.category_link + '/' + e.id + '-' + e.link_rewrite + '/" title="' + e.name + '"><img height="100" width="100" src="/imgs/' + e.image_id + '/1/"></a></td><td class="cart_pr_na"><a href="/' + e.category_link + '/' + e.id + '-' + e.link_rewrite + '/" title="' + e.name + '">' + e.name + '</a></td><td class="cart_pr_cou">&#8854;' + e.count + 'шт.&#8853;</td><td class="cart_pr_pri">' + (e.price * e.count) + 'руб.</td></tr>'
                hint.append(html);
            });
            $('div.cart').append('<a href="/cart" title="Перейти в корзину">Всего товаров &nbsp; ' + count + ' на сумму ' + price + ' руб</a>');
        }

Если обновить страницу, то будет все в порядке - "Всего товаров 2 на сумму 2000р"

а вот код, который при нажатии на кнопку добавляет товар в корзину
Код:
$('div.column-add_to_cart').on('click', function () {
            var val = $(this).children('.button').attr('value');
            $.getJSON(
                '/ajax/add/',
                {product_id:val},
                function (result) {
                    if (result.success == true){ addToCart(result.items)}
                }
            );
        });

В js совсем не понимаю, надеюсь правильно изложил)


То есть при нажатии на кнопку, на странице появляется <a href="">Всего...</a>, если нажать еще раз, то эти строчек будет уже 2:
<a href="">Всего...</a>
<a href="">Всего...</a>
И так далее, а мне нужно сделать так, что если есть несколько <a>, то нужно оставить только одну, последнюю
 
Последнее редактирование:
$('div.cart').append('<a href="/cart" title="

Вместо append сделай html, так:

$('div.cart').html('<a href="/cart" title="
 
$('div.cart').append('<a href="/cart" title="

Вместо append сделай html, так:

$('div.cart').html('<a href="/cart" title="
Спасибо, помогло, но не до конца)) сами товары наслаиваются друг на друга.
Если в корзине уже было 3 товара и добавить четвертый, то покажет 7 товаров (с повторами)
<tr class="cart_pr_im"></tr>
<tr class="cart_pr_im"></tr>
<tr class="cart_pr_im"></tr>

А если вот здесь заменить append на html
Код:
var html = '<tr class="cart_pr_it"><td class="cart_pr_im">' + e.name + '</tr>'
                hint.append(html);
, то будет показан только последний добавленный в корзину товар.
 
Спасибо, помогло, но не до конца)) сами товары наслаиваются друг на друга.
Если в корзине уже было 3 товара и добавить четвертый, то покажет 7 товаров (с повторами)
<tr class="cart_pr_im"></tr>
<tr class="cart_pr_im"></tr>
<tr class="cart_pr_im"></tr>

А если вот здесь заменить append на html
Код:
var html = '<tr class="cart_pr_it"><td class="cart_pr_im">' + e.name + '</tr>'
                hint.append(html);
, то будет показан только последний добавленный в корзину товар.
Попробуй перед
hint.append(html);
Поставить
hint.empty();
 
Мне кажется было бы проще очистить товары и просто вызвать функцию, которая собирает их при загрузке страницы, но вообще такие вещи в консоле надо дебажить...
 
Назад
Сверху