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

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

  • Вопрос задан
  • 133 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 2
Seasle
@Seasle Куратор тега JavaScript
document.querySelectorAll('[data-block="road"]').length;
Ответ написан
0xD34F
@0xD34F Куратор тега JavaScript
Где находятся кликаемые элементы; где находятся элементы, которые надо посчитать; каким data-атрибутом задаётся связь между элементами:

const buttons = document.querySelector('.content');
const blocks = document.querySelector('.wrap');
const dataAttr = 'block';

Считаем:

buttons.addEventListener('click', e => {
  const block = e.target.dataset[dataAttr];
  if (block) {
    console.log(blocks.querySelectorAll(`:scope > [data-${dataAttr}="${block}"]`).length);
  }
});

или

const onClick = ({ target: { attributes: { ['data-' + dataAttr]: { value } } } }) =>
  console.log(Array.prototype.reduce.call(
    blocks.children,
    (acc, n) => acc + (n.getAttribute('data-'.concat(dataAttr)) === value),
    0
  ));

for (const n of buttons.children) {
  n.addEventListener('click', onClick);
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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