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

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

  • Вопрос задан
  • 137 просмотров
Подписаться 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 key = 'block';
const attr = `data-${key}`;
const attrSelector = `[${attr}]`;

Считаем:

buttons.addEventListener('click', e => {
  const button = e.target.closest(attrSelector);
  if (button) {
    const value = button.dataset[key];
    console.log(blocks.querySelectorAll(`[${attr}="${value}"]`).length);
  }
});

или

const onClick = ({ currentTarget: { attributes: { [attr]: { value } } } }) =>
  console.log(Array.prototype.reduce.call(
    blocks.children,
    (acc, n) => acc + (n.getAttribute(attr) === value),
    0
  ));

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

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

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