Задать вопрос
@freeman0204

Как сравнить 2 списка по data и по клику при совпадении удалять li которые совпадают?

Мне нужно сравнивать data, и проходится по списку через each или сравнивать 2 массива?
Клик можно делать как по первому списку так и по второму.
Код
  • Вопрос задан
  • 78 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Fullstack-разработчик на Python + нейросети
    20 месяцев
    Далее
  • Skillfactory
    Профессия Веб-разработчик
    12 месяцев
    Далее
  • Яндекс Практикум
    Фронтенд-разработчик
    10 месяцев
    Далее
Решения вопроса 2
0xD34F
@0xD34F Куратор тега JavaScript
Где элементы находятся и о каком data-атрибуте идёт речь:

const container = document.body;
const key = 'number';
const attr = `data-${key}`;
const attrSelector = `[${attr}]`;

Вариант раз - обработчик клика вешаем на общего предка элементов; по клику ищем все элементы со значением атрибута как у кликнутого и удаляем их:

container.addEventListener('click', function(e) {
  const value = e.target.closest(attrSelector)?.dataset[key];
  if (value) {
    this.querySelectorAll(`[${attr}="${value}"]`).forEach(n => n.remove());
  }
});

Вариант два - заранее получаем массив всех элементов с атрибутом; обработчик клика цепляем непосредственно на элементы; при клике бежим по массиву, у кого значение атрибута совпало с кликнутым, тех удаляем (как со страницы, так и из массива):

const elems = [...container.querySelectorAll(attrSelector)];
const onClick = ({ currentTarget: { attributes: { [attr]: { value } } } }) =>
  elems.length -= elems.reduce((acc, n, i, a) => (
    a[i - acc] = n,
    acc + (n.getAttribute(attr) === value && !n.replaceWith())
  ), 0);

elems.forEach(n => n.addEventListener('click', onClick));
Ответ написан
Комментировать
sergiks
@sergiks Куратор тега JavaScript
♬♬
По клику получать элемент, его значение, его родительский список.
Определить второй список. В нём найти элемент с таким же значением:

Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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