art201214

Корзина на JS

    Рекомендуемые сообщения

    art201214    0
    art201214

    Здравствуйте, товарищи

    Пытаюсь написать корзину, так сказать на native js, и пока слабо представляю как это сделать. Возможно, кто-то сможет хотя бы словесно меня направить в нужное русло. У меня есть некоторые замыслы, они описаны в конце

    Есть страница товара (на каждый товар отдельно) и страница корзины отдельно (скрины страниц приложены). Предполагается хранить "корзину" в localstorage.

    Со страницы товара нужно вытянуть изображение, название, цену, выбранный цвет и размер. Соответственно, после нажатия кнопки "add to bag" товар должен отобразиться на странице корзины. Если товар с такими же параметрами уже есть в хранилище, нужно увеличить счетчик этого товара в корзине на 1, по клику на "remove item" - уменьшить на 1. Клик по "empty bag" - очистить корзину. Так же нужно подсчитать сумму всех товаров и их количество. 

    Скрытый текст

     Товарfc64e1a41485.jpg

    Корзинаff6611b4b887.jpg

    У меня пока что возникают такие идеи: 

    - Для каждого товара по нажатию на кнопку "add" создавать объект, в качестве свойств и сделать изображение(путь к нему), название, цену, выбранный цвет и размер.

    - После пройтись по объектам и сравнить свойства только созданного с имеющимися (если уже имеется такой же объект добавить к счетчику, если нет - добавить новый товар в корзину). В этом пункте мне более всего нужны советы, т.к. не представляю как это сейчас сделать

    - Как собрать сумму покупок пока что тоже слабо понимаю

    - Как удалить один экземпляр товара (уменьшить счетчик товара на 1, если он до этого был =1 - удалить товар (как удалить товар в таком случае - не соображу))

     

    Буду благодарен за любые советы и помощь

    Изменено пользователем art201214

    Поделиться сообщением


    Ссылка на сообщение
    Поделиться на других сайтах
    by chris    89
    by chris

    Вряд ли, кто-то будет описывать весь алгоритм. В общих чертах верно, но каждый товар должен иметь идентификатор. И пусть все товары хранятся в одном объекте в котором ключом будет айди, а значениями поля товара... Объект храним в локальном хранилище в формате json. Для любых изменений берем строку из хранилища парсим в объект, изменяем, преобразовываем в json, очищаем хранилище, пишем новую строку в хранилище.

    12 часа назад, art201214 сказал:

    - После пройтись по объектам и сравнить свойства только созданного с имеющимися (если уже имеется такой же объект добавить к счетчику, если нет - добавить новый товар в корзину). В этом пункте мне более всего нужны советы, т.к. не представляю как это сейчас сделать

    Проитерировать по объекту, если айди товара совпадает с ключом - тело условия...

    12 часа назад, art201214 сказал:

    - Как собрать сумму покупок пока что тоже слабо понимаю

    Проитерировать по каждому товару в объекте , внутри товара обращаться к нужному ключу и производить сложение в переменную.

    12 часа назад, art201214 сказал:

    - Как удалить один экземпляр товара (уменьшить счетчик товара на 1, если он до этого был =1 - удалить товар (как удалить товар в таком случае - не соображу))

    Обратиться к объекту по айди товара. Если такой ключ есть и свойство quantity больше одного - декрементировать свойство quantity, иначе если такой ключ есть и свойство quantity равно одному удалить объект по id.

    Поделиться сообщением


    Ссылка на сообщение
    Поделиться на других сайтах

    Создайте аккаунт или войдите в него для комментирования

    Вы должны быть пользователем, чтобы оставить комментарий

    Создать аккаунт

    Зарегистрируйтесь для получения аккаунта. Это просто!

    Зарегистрировать аккаунт

    Войти

    Уже зарегистрированы? Войдите здесь.

    Войти сейчас

    • Войти через Facebook
    • Войти через Twitter
    • Войти через Microsoft
    • Войти через LinkedIn
    • Войти через Google

    • Похожие публикации

      • Vic-Tor
        Автор: Vic-Tor
        Добрый день!
        Боюсь, что моя корзина не всем понравится, кто-нить может предложить полноценную корзину на мой сайт??
         
        Спасибо! Жду предложений.
      • illya_v
        Автор: illya_v
        Вопрос для знатоков.
        Есть такая верстка.
        Вопрос заключается в том почему в Chrome и Opera у элемента с классом "panel" появляется вертикальный скрол-бар.
        И как от него избавиться. Естественно решение просто убрать overflow: auto не подходит.
        Тестировал в Chrome 36 и Opera 20.
      • maliyshock
        Автор: maliyshock
        Всем привет! Я начал на днях делать корзину для сайта. Делаю это впервые, с ajax и js знаком плохо, отсюда ошибки и вопросы.

        http://jazz-i-lopata.ru/category/%D0%B8%D0%B3%D1%80%D1%8B/#

        Вот что готово - при клике на ссылку "добавить в корзину" товар добавляется в корзину и выводится таблица с количеством товара, его стоимостью и общей стоимостью.

        Вся эта схема пока работает благодоря 3-м файлам.

        header.php - в котором отслеживаются события кликов по тому или иному элементу и запускается соответствующая функция.
        <script language="javascript">
        $(document).ready(function() { $(".submit").click(function(){ var id = $(this).attr("id"); $.post("<?php bloginfo("url"); ?>/korzina", {data: id}, function(data){ $("#cart").html(data); }); }); $(".remove").click(function(){ var remove_id = $(this).attr("id"); $.post("<?php bloginfo("url"); ?>/korzina", {remove: remove_id}, function(data){ $("#cart2").html(data); }); $("#cart").hide(); }); }); </script> При клике на ссылку "Добавить в карзину" запускается первая функция, которая передаёт на страницу korzina - id добавляемого товара.
        На странице korzina происходит получение id товара и подсчёт количества. 
        session_start();if (isset($_POST['data'])) { $data = $_POST['data']; $_SESSION['cart'][$data] += 1;}if (isset($_POST['remove'])) { $remove = $_POST['remove']; session_unset($_SESSION['cart'][$remove]);} Есть ещё файл category.php в котором настроен вывод товаров и указаны соответствующие id и классы.

        Что не работает:
        - по клику на кнопку "удалить" по аналогии с кнопкой "добавить в карзину" должен запускаться процесс отсылки id на страницу karzina. После чего если условие isset($_POST['remove']) выполняется из массива сессии должен быть удален переданный id и возвращен список всех оставшихся элементов но этого почему-то не происходит.
        Ии вот, пока я на этом повис не понимаю в чём причина. Кто знает?

        И ещё вопрос. Ребят, какие форумы посоветуете, где адекватные люди могут адекватно подсказать?