@hulktoster

Как переписать фильтр товаров на React?

Как написать такой фильтр товаров на React?

<div class="filter">
  <div class="filter-inner">
    <div class="dropdown">
      <button onclick="myFunction()" class="dropbtn">Страна</button>
      <div id="myDropdown" class="dropdown-content">
        <button class="btn-filter">Все</button>
        <input type="checkbox" class="btn" value="turkey"> Турция<br>
        <input type="checkbox" class="btn" value="china"> Китай<br>
        <input type="checkbox" class="btn" value="france"> Франция<br>
        <input type="checkbox" class="btn" value="italy"> Италия<br>
      </div>
    </div>
  </div>
</div>

<div class="placeholder turkey Amoda polyester">
<div class="placeholder-image">
<img src="https://cdn.shopify.com/s/files/1/2671/4680/products/pol_dress_sage_240x.jpg?v=1553634712">
</div>
<button type="submit" class="btn-buy">Turkey</button>
<div class="price">Цена: 0,00 </div>
</div>

<div class="placeholder china Bmoda polyester">
<div class="placeholder-image">
<img src="https://cdn.shopify.com/s/files/1/0519/8561/products/IMG_5881_76665333-5efd-46da-b57e-2472ddb55697_240x.jpg?v=1548397696">
</div>
<button type="submit" class="btn-buy">Chine</button>
<div class="price">Цена: 0,00 </div>
</div>

<div class="placeholder france Cmoda cotton">
<div class="placeholder-image ">
<img src="https://cdn.shopify.com/s/files/1/0073/5671/1030/products/websizedphotos_1_copy_6_522fb324-3529-4e22-989e-0924860cb34d_240x.png?v=1553665976">
</div>
<button type="submit" class="btn-buy">France</button>
<div class="price">Цена: 0,00 </div>
</div>

<div class="placeholder italy Dmoda cotton">
<div class="placeholder-image">
<img src="https://cdn.shoptiques.com/shoptiques-shop/products/mock-neck-dress-14-blue-9f38a7d3_pl.jpg">
</div>
<button type="submit" class="btn-buy">Italy</button>
<div class="price">Цена: 0,00 </div>
</div>

....................................................................................................................................................................................
var allProducts = document.getElementsByClassName('placeholder');
var checkboxes = document.querySelectorAll('input[type="checkbox"]');
var selected_countries = [];

// отобразить все товары
document.getElementsByClassName('btn-filter')[0].addEventListener('click', function(){
  for(var i = 0; i < allProducts.length; i++) {
    allProducts[i].style.display = 'block';
  }
});

// ловим клики по чекбоксам
for(var k = 0; k < checkboxes.length; k++) {
  checkboxes[k].addEventListener('click', function(){
    showHideProducts(this);
  });
}

// и скрываем или отображаем соответственные ячейки товаров
function showHideProducts(thisInput) {

  if(thisInput.checked == true) { // при проставлении галки
    // добавляем страну в массив выбранных стран
    selected_countries.push(thisInput.value);

  } else { // а при снятии галки

    var index = selected_countries.indexOf(thisInput.value);
    if(index > -1) {

      // удаляем страну с массива
      selected_countries.splice(index, 1);
    }
  }
	
  for(var i = 0; i < allProducts.length; i++) {

    // берем второй класс ячейки товара т.е. его страну
    var secondClass = allProducts[i].className.split(' ')[1];

    // если второй класс ячейки товара (страна) НЕ содержится в массиве выбранных стран
    if(!~selected_countries.indexOf(secondClass)) {

      allProducts[i].style.display = 'none'; // тогда скрываем ячейку

    } else { // а если содержится
      allProducts[i].style.display = 'block'; // тогда отображаем
    }
  }
}
  • Вопрос задан
  • 213 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега React
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы