Показать сообщение отдельно
  #8 (permalink)  
Старый 28.08.2019, 19:38
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от nathan111777
Под вторым имеется код где товары фильтруется фильтрами
А фильтрация где производится, наверное же на страницах так ведь? А значит зачем вообще нужен дубликат товаров в виде массива?

Можно сделать так (я пишу тезисы, если поймете, то напишите так, если нет, тогда конкретно код):

1) Функция loadGoods не нужна, и лучше ее заменить на вывод html кода товаров, для примера назовем ее showGoods. Она содержит только вывод товаров из определенного ранее объекта, назовем его goods.

var out = '';
for (var key in goods[sex]) { ....

2) Объект с товарами получается один раз при загрузке страницы (ocument.addEventListener('DOMContentLoaded' .....), для этого проверяется: если переменная goods не определена (можно проверять и определенную на пустоту), то делается запрос на сервер $.getJSON('goods.json' .... результат которого (объект) присваивается переменной goods, а далее управление передается функции showGoods и далее у вас по списку.

Это позволит работать с объектом товаров любому сценарию на странице.

PS. Не известно какие сценарии и как будут исполняться, но если все просто, то можно всего лишь изменить это:

var cart = {};
document.addEventListener('DOMContentLoaded', function (e) {              
  loadGoods();
  checkCart();      
  showMiniCart();
});


на

var cart = {}, goods;
document.addEventListener('DOMContentLoaded', function () {              
    $.getJSON('goods.json', function (data) {
        goods = data;    
        showGoods(); //читайте выше
        checkCart();      
        showMiniCart();
    });
});


и далее везде работать с объектом goods.

Последний раз редактировалось laimas, 28.08.2019 в 19:55.
Ответить с цитированием