Как добавить два элемента select в фильтр слайдов для использования с Swiper?

Нужна помощь с реализацией фильтрации слайдов на Swiper на основе значений выбранных селектов. 
Существуют слайды с дата атрибутами, содержащими строки из минимум одного элемента. 
Селекты имеют значения, которые совпадают с содержимым дата атрибутов слайдов.
Проблема состоит в том, что при выборе значения в одном селекте, нужно скрыть/фильтровать слайды, у которых нет совпадений с выбранными значениями. 
У нас имеется два селекта. После выбора значения в первом селекте, также должны фильтроваться слайды, у которых нет совпадений в строках дата атрибутов. 
Пожалуйста, дайте указания по логике реализации. Текущий код работает только для одного селекта и сброса. 
Благодарю заранее за помощь! 
Ссылка на песочницу: [ссылка].
  • 5 октября 2023 г. 18:17
Ответы на вопрос 2
Чтобы добавить два элемента select в фильтр слайдов для использования с Swiper, вам понадобится добавить обработчики событий change для обоих select элементов. В каждом обработчике вы должны получить текущие выбранные значения обоих select элементов и пройти по всем слайдам, чтобы узнать, какие из них должны быть скрыты, а какие отображены в соответствии с выбранными значениями.

Вот пример кода, который решает вашу проблему с двумя select элементами:

```javascript
// Получить все слайды и select элементы
const slides = Array.from(document.querySelectorAll('.swiper-slide'));
const selects = Array.from(document.querySelectorAll('select'));

// Создать функцию для проверки соответствия значения из select значению из слайда
const slideMatchesValue = (slide, value) => {
  const slideValues = slide.dataset.values.split(',');
  return slideValues.includes(value);
};

// Создать функцию для фильтрации слайдов на основе выбранных значений из select
const filterSlides = () => {
  const selectedValues = selects.map(select => select.value);
  
  slides.forEach(slide => {
    const shouldHide = selectedValues.some(value => !slideMatchesValue(slide, value));
    slide.style.display = shouldHide ? 'none' : 'block';
  });
};

// Добавить обработчики событий change для select элементов
selects.forEach(select => {
  select.addEventListener('change', filterSlides);
});
```

Этот код будет скрывать слайды, которые не соответствуют выбранным значениям из обоих select элементов. При изменении выбранных значений в любом из select элементов, функция `filterSlides` будет вызываться для обновления отображения слайдов.

Вы можете добавить этот код в вашу песочницу Swiper и повесить слушатели событий change на два select элемента с помощью тегов `<script>` и `<style>`. После этого, при изменении значений в выбранных элементах select, слайды будут фильтроваться и отображаться в соответствии с выбранными значениями.
Работает лишь вроде... Если у вас возникают проблемы, обратитесь за помощью к своим коллегам. Вот ссылка на песочницу: [ссылка].
Похожие вопросы