<div class="catalog__top_box">
<button class="catalog__top_box-btn" id="btn-france">Франция</button>
<button class="catalog__top_box-btn" id="btn-germany">Германия</button>
<button class="catalog__top_box-btn" id="btn-england">Англия</button>
</div>
const btnActiveFrance = document.querySelector('#btn-france');
btnActiveFrance.classList.add('active');
const btnActive = document.querySelectorAll('.catalog__top_box button');
btnActive.forEach(item => {
item.addEventListener('click', () => {
btnActive.forEach(e => {
e.classList.remove('active');
})
item.classList.add('active');
})
})
const catalogBox = document.querySelector("#catalog-box");
getCatalog();
async function getCatalog() {
const response = await fetch('catalogBox.json');
const catalogArray = await response.json();
renderBlog(catalogArray);
}
function renderBlog(catalogArray) {
catalogArray.forEach(function (item) {
const catalogHTML = `
<div class="catalog__card" id="${item.id}">
<img src="${item.img}" alt="${item.alt}" class="catalog__card_img">
<p class="catalog__card_author">${item.author}</p>
<p class="catalog__card_name">${item.name}</p>
<p class="catalog__card_note">${item.note}</p>
<p class="catalog__card_price">${item.price}</p>
<button class="catalog__card_btn">${item.btn}</button>
</div>
`;
catalogBox.insertAdjacentHTML('beforeend', catalogHTML)
});
};
[
{
"id": 1,
"author": "Марсель Руссо",
"name": "Охота Амура",
"note": "Холст, масло (50х80)",
"price": "14 500 руб",
"img": "./img/catalog/France/France1.jpg",
"alt": "img",
"tag": "France",
"btn": "В корзину"
},
{
"id": 2,
"author": "Анри Селин",
"name": "Дама с собачкой",
"note": "Акрил, бумага (50х80)",
"price": "16 500 руб",
"img": "./img/catalog/France/France2.jpg",
"alt": "img",
"tag": "France",
"btn": "В корзину"
},
{
"id": 3,
"author": "Франсуа Дюпон",
"name": "Процедура",
"note": "Цветная литография (40х60)",
"price": "20 000 руб",
"img": "./img/catalog/France/France3.jpg",
"alt": "img",
"tag": "France",
"btn": "В корзину"
},
{
"id": 4,
"author": "Луи Детуш",
"name": "Роза",
"note": "Бумага, акрил (50х80)",
"price": "12 000 руб",
"img": "./img/catalog/France/France4.jpg",
"alt": "img",
"tag": "France",
"btn": "В корзину"
},
{
"id": 5,
"author": "Франсуа Дюпон",
"name": "Птичья трапеза",
"note": "Цветная литография (40х60)",
"price": "22 500 руб",
"img": "./img/catalog/France/France5.jpg",
"alt": "img",
"tag": "France",
"btn": "В корзину"
},
{
"id": 6,
"author": "Пьер Моранж",
"name": "Пейзаж с рыбой",
"note": "Цветная литография (40х60) ",
"price": "20 000 руб",
"img": "./img/catalog/France/France6.jpg",
"alt": "img",
"tag": "France",
"btn": "В корзину"
},
{
"id": 1,
"author": "Курт Вернер",
"name": "Над городом",
"note": "Цветная литография (40х60)",
"price": "16 000 руб",
"img": "./img/catalog/Germany/Germany1.jpg",
"alt": "img",
"tag": "Germany",
"btn": "В корзину"
},
{
"id": 2,
"author": "Макс Рихтер",
"name": "Птенцы",
"note": "Холст, масло (50х80) ",
"price": "14 500 руб",
"img": "./img/catalog/Germany/Germany2.jpg",
"alt": "img",
"tag": "Germany",
"btn": "В корзину"
},
{
"id": 3,
"author": "Мартин Майер",
"name": "Среди листьев",
"note": "Цветная литография (40х60)",
"price": "20 000 руб",
"img": "./img/catalog/Germany/Germany3.jpg",
"alt": "img",
"tag": "Germany",
"btn": "В корзину"
},
{
"id": 4,
"author": "Герман Беккер",
"name": "Яркая птица",
"note": "Цветная литография (40х60)",
"price": "13 000 руб",
"img": "./img/catalog/Germany/Germany4.jpg",
"alt": "img",
"tag": "Germany",
"btn": "В корзину"
},
{
"id": 5,
"author": "Вульф Бауэр",
"name": "Дятлы",
"note": "Бумага, акрил (50х80)",
"price": "20 000 руб",
"img": "./img/catalog/Germany/Germany5.jpg",
"alt": "img",
"tag": "Germany",
"btn": "В корзину"
},
{
"id": 6,
"author": "Вальтер Хартманн",
"name": "Большие воды",
"note": "Бумага, акрил (50х80)",
"price": "23 000 рубб",
"img": "./img/catalog/Germany/Germany6.jpg",
"alt": "img",
"tag": "Germany",
"btn": "В корзину"
},
{
"id": 1,
"author": "Пол Смит",
"name": "Дикий зверь",
"note": "Акварель, бумага (50х80)",
"price": "19 500 руб",
"img": "./img/catalog/England/England1.jpg",
"alt": "img",
"tag": "England",
"btn": "В корзину"
},
{
"id": 2,
"author": "Джон Уайт",
"name": "Скалистый берег",
"note": "Цветная литография (40х60) ",
"price": "17 500 руб",
"img": "./img/catalog/England/England2.jpg",
"alt": "img",
"tag": "England",
"btn": "В корзину"
},
{
"id": 3,
"author": "Джим Уотсон",
"name": "Река и горы",
"note": "Акварель, бумага (50х80)",
"price": "20 500 руб",
"img": "./img/catalog/England/England3.jpg",
"alt": "img",
"tag": "England",
"btn": "В корзину"
},
{
"id": 4,
"author": "Юджин Зиллион",
"name": "Белый попугай",
"note": "Цветная литография (40х60) ",
"price": "15 500 руб",
"img": "./img/catalog/England/England4.jpg",
"alt": "img",
"tag": "England",
"btn": "В корзину"
},
{
"id": 5,
"author": "Эрик Гиллман",
"name": "Ночная рыба",
"note": "Бумага, акрил (50х80) ",
"price": "12 500 руб",
"img": "./img/catalog/England/England5.jpg",
"alt": "img",
"tag": "England",
"btn": "В корзину"
},
{
"id": 6,
"author": "Альфред Барр",
"name": "Рыжий кот",
"note": "Цветная литография (40х60)",
"price": "21 000 руб",
"img": "./img/catalog/England/England6.jpg",
"alt": "img",
"tag": "England",
"btn": "В корзину"
}
]
<button data-country="">Показать всё</button>
<button data-country="France">Франция</button>
<button data-country="Germany">Германия</button>
<button data-country="England">Англия</button>
const catalogEl = document.querySelector('#catalog-box');
let catalogArr = [];
const buttons = document.querySelectorAll('button[data-country]');
buttons.forEach(n => n.addEventListener('click', onClick));
function onClick({ target: t }) {
buttons.forEach(n => n.classList.toggle('active', n === t));
renderCatalog(t.dataset.country);
}
function renderCatalog(country) {
const toRender = country
? catalogArr.filter(n => n.tag === country)
: catalogArr;
catalogEl.innerHTML = toRender
.map(n => `
<div class="catalog__card" id="${n.id}">
<img src="${n.img}" alt="${n.alt}" class="catalog__card_img">
<p class="catalog__card_author">${n.author}</p>
<p class="catalog__card_name">${n.name}</p>
<p class="catalog__card_note">${n.note}</p>
<p class="catalog__card_price">${n.price}</p>
<button class="catalog__card_btn">${n.btn}</button>
</div>`)
.join('');
}
fetch('catalogBox.json')
.then(r => r.json())
.then(r => {
catalogArr = r;
buttons[0].click();
});