Как с помощью JS составить массив значений из атрибута title элементов div определенных пользовательских CSS классов?
Я специализируюсь на python
-бэкенд разработке. Но сейчас делаю свой первый full-stack
проект, поэтому только начинаю изучать JS
.
Суть задачи: есть список дивов с классом username-card
. Первая подзадача: проверить , существует ли, введенное пользователем значение в массиве атрибутов title
всех дивов класса. Если не существует - вернуть ошибку. Если существует, то решается вторая подзадача: скрыть все дивы, которые не соответствуют введенному пользователем значению.
Условие отсутствия username в массиве срабатывает. А вот цикл перебора элементов и скрытия ненужных карточек - нет. По отдельности обе функции работают. Не могу понять, что не так.
Вот мой JS
код:
function showSearchedUserCard() {
const username = document.getElementById("inputSearchUserCards").value
const divList = document.querySelectorAll('.username-card');
const titles = []
divList.forEach(el => {
titles.push(el.title);
})
if (titles.includes(username)) {
hideUserCards(username)
} else {
document.getElementById("inputSearchUserCards").value = 'Пользователь не существует';
document.getElementById("inputSearchUserCards").style.color = 'red';
}
}
function hideUserCards(username) {
const cards = Array.prototype.slice.call(document.getElementsByClassName('username-card'));
for (const card of cards) {
if (card.title === username) {
card.style.display = 'block';
} else {
card.style.display = 'none';
}
}
}
HTML
инпута:
<div class="col-lg-8 col-md-7 col-sm-12 col-12">
<input type="search" class="form-control" id="inputSearchUserCards" placeholder="Введите username пользователя" list="UserName">
</div>
<div class="col-lg-3 col-md-4 col-sm-9 col-9">
<button class="btn btn-success" onclick="showSearchedUserCard()">
<strong>Отфильтровать</strong>
</button>
</div>
HTML
целевого дива:
<div class="card-body px-0 py-0">
{% for object in object_list %}
<div class="username-card" title="{{ object.username }}">
....
Буду благодарен любому ответу