Как переделать forEach на цикл for в сложном коде? [закрыт]

159
19 февраля 2021, 12:10
Закрыт. Этот вопрос не по теме. Ответы на него в данный момент не принимаются.

Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском.

Закрыт 1 год назад.

Улучшить вопрос

У меня есть фильтр товаров.
Помогите передалать в местах где forEach на цикл for.
Прошу дубликатом не отмечать, я похожий ответ видел, пробовал аналогично сделать, но у меня ошибка в коде.
Прокомментировал в тех местах, где он есть.

    addEventListener("load", function () {
  var check = true;
  document.querySelector(".filter").addEventListener("click", function (_ref) {
    var target = _ref.target;
    var el = target.closest("[data-filter]");
    if (!el) return;
    var cls = target.dataset.filter;
    if (cls == "all") {
      document.querySelectorAll(".btn").forEach(function (btn) { // 1
        return btn.checked = check;
      });
      check = !check;
    }
    var sel = ".placeholder";
    document.querySelectorAll(sel).forEach(function (el) { //2
      return el.classList.add("hide");
    });
    document.querySelectorAll(".btn:checked").forEach(function (btn) { //3
      cls = btn.dataset.filter;
      document.querySelectorAll(sel + "." + cls).forEach(function (el) { //4
        return el.classList.remove("hide");
      });
    });
  });
});
Answer 1
 window.addEventListener("load", function () {
  var check = true;
  document.querySelector(".filter").addEventListener("click", function (_ref) {
    var target = _ref.target;
    var el = target.closest("[data-filter]");
    if (!el) return;
    var cls = target.dataset.filter;
    if (cls == "all") {
      var button = document.querySelectorAll(".btn");
      for (let i = 0; i < button.length; i++) {
        button[i].checked = check;
      }
      check = !check;
    }
    var sel = ".placeholder";
    var element = document.querySelectorAll(sel);
    for (let i = 0; i < element.length; i++) {
      element[i].classList.add("hide");
    }
    var btn = document.querySelectorAll(".btn:checked");
    for(let i = 0; i < btn.length; i++) {
      cls = btn[i].dataset.filter;
      var el = document.querySelectorAll(sel + "." + cls);
      for (let j = 0; j < el.length; j++) {
        el[j].classList.remove("hide");
      }
    }
  });
});

По идее так

Answer 2

Цикл for..of

for (let el of document.querySelectorAll(sel)) {
  // Работаете с элементом el
}
READ ALSO
Как вывести на печать таблицу со стилями

Как вывести на печать таблицу со стилями

Мне нужно распечатать таблицу которая выглядит вот так:

145
Координаты элемента в окне

Координаты элемента в окне

Можно ли как-нибудь получить координаты элемента относительно окна кроме getBoundingClientRect? Без JQuery

157
Скрытие класса при нажатии на кнопку

Скрытие класса при нажатии на кнопку

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

140
Можно ли узнать id перекрытого div другим div?

Можно ли узнать id перекрытого div другим div?

Есть два divОдин наложен на другой

137