@montpellier

Как при клике на элемент помещать значение дата атрибута в массив?

Есть несколько элементов, как при клике по одному переносить значение его дата атрибута в массив, а при повторном клике убирать из него?
  • Вопрос задан
  • 702 просмотра
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Получить значение атрибута; получить индекс значения атрибута в массиве; если индекс равен -1 - добавить значение в массив, в противном случае - удалить:

const active = [];

document.addEventListener('click', ({ target: t }) => {
  const value = t.dataset['data-атрибут'];
  if (value) {
    const index = active.indexOf(value);
    if (index === -1) {
      active.push(value);
    } else {
      active.splice(index, 1);
    }
  }
});

Правда, не очень понятно, зачем такие сложности. Можно при клике переключать класс, и когда возникнет необходимость в значениях атрибутов, достать их из элементов, имеющих класс:

document.addEventListener('click', ({ target: t }) => {
  if (t.dataset['data-атрибут']) {
    t.classList.toggle('active');
  }
});

const active = Array
  .from(document.querySelectorAll('.active'), n => n.dataset['data-атрибут'])
  .join(', ');

https://jsfiddle.net/uqh4xenr/
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
b0nn1e
@b0nn1e
Alcohol & Ruby on Rails
а в чем проблема?

При клике на елемент берем его дата атрибут. Если в массиве есть это значение удаляем из массива - если нету добавляем.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы