Как не отображать «Очистить фильтры», если в пользовательском раскрывающемся списке выбран параметр «Все»?

#javascript

Вопрос:

В этом выпадающем меню у меня есть опция для отображения фрагмента текста «Очистить фильтры», если выбрана опция фильтрации. Если я нажму «Очистить фильтры», то он исчезнет, и все карты вернутся.

Проблема, с которой я сталкиваюсь, заключается в том, что я НЕ хочу отображать «Очистить фильтры», если используется выбор «Все». Если выбрано «Все», то должны отображаться все карты.

Полный кодовый код находится здесь.

Моя область деятельности-это:

 //clear selection
function clearSelection() {
  document.querySelector(".custom__select-wrapper .story-sel h6").textContent = "STORY TYPE";
  document.querySelector(".custom__select-wrapper .year-sel h6").textContent = "YEAR";
  document.querySelector(".custom__option.selected[data-type]").classList.remove("selected");
  document.querySelector(".custom__option.selected[data-year]").classList.remove("selected");
  document.querySelector(".custom__option[data-type='all']").classList.add("selected");
  document.querySelector(".custom__option[data-year='all']").classList.add("selected");

  selectedFilter.classList.add("hidden");

  let articles = [...document.querySelectorAll(".article")];

  current_story = "all";
  current_year = "all";

  articles.forEach(function (article) {
    article.classList.add("hidden");
    article.classList.add("chosen");
  });
  loadInitial();
  checkLoadMore();
  checkEmpties();
}
 

Ответ №1:

Вы можете изменить прослушиватель событий «кнопка сброса». Вместо добавления hidden класса и удаления selected-clearFilter (не уверен, что это делает…) вы можете принудительно переключить его на основе текущего выбора. Проверьте, так ли это "all" .

 //reset button
let filterSelection = document.querySelectorAll(".dropdown").forEach(dropdown => {
  dropdown.addEventListener("click", function () {
    let allSelected = current_story === 'all' amp;amp; current_year === 'all';
    selectedFilter.classList.toggle("hidden", allSelected);
    selectedFilter.classList.toggle('selected-clearFilter', !allSelected)
  })
});
 

Кроме того , вы должны инициализировать свои переменные с "all" помощью, в противном случае это сработает только после того, как вы изменили оба значения хотя бы один раз.

 let current_story = "all",
  current_year = "all";