Как мне найти количество дочерних элементов с определенным классом с помощью ванильного javascript

#javascript #html

#javascript #HTML

Вопрос:

У меня есть строка, которая автоматически заполняется данными из api. Каждый результат из api сохраняется в div, который также создается с помощью js, а затем к нему добавляется класс.

Затем у меня есть фильтр, подключенный к окну поиска, который фильтрует результаты и показывает соответствующие данные. Разделам, у которых нет поискового запроса, присваивается новый класс «скрыть», который их скрывает. Всякий раз, когда выполняется поиск, я хочу выполнить поиск по заполненной строке и выяснить, сколько divs имеют класс «скрыть», но, похоже, я пока не могу найти рабочее решение.

Вот как выглядит структура кода

 <div class="row">
   <div class="data"></div>
   <div class="data"></div>
   <div class="data"></div>
   <div class="data hide"></div>     <!-- this is what itll look like for hidden divs -->
   <div class="data hide"></div>
</div>
 

Могу ли я использовать childelementcount в дополнение к classlist.contains(), чтобы решить эту проблему? Или что такое прогулка по кругу?

Ответ №1:

Один из подходов к решению этой проблемы заключается в использовании querySelectorAll() :

 var list = document.getElementById('list');

var count = list.querySelectorAll('.data.hide').length;

console.log(count);
 

Пожалуйста, обратите внимание, что я добавил an id к row элементу, чтобы упростить доступ к нему:

 <div id="list" class="row">
   <div class="data"></div>
   <div class="data"></div>
   <div class="data"></div>
   <div class="data hide"></div> 
   <div class="data hide"></div>
</div>
 

Вот живая демонстрация для вашего краткого ознакомления.

Комментарии:

1. Это сработало отлично. Спасибо @matt ! Я совершенно забыл, что могу использовать для этого свойство length. Спасибо за помощь 🙂