Реализовать поиск по скрытому списку ul -> li
Помогите пожалуйста. Покурил форум, слепил из двух решений одно, но оно, естественно, оказалось не рабочим. С js даже не на Вы.
Коротко, что хочу сделать: Список. В нем дивы, раскрывающиеся и закрывающиеся по клику мышкой(работает), в этих дивах ссылки (есть). -> Поиск по вложенному списку. То-есть вот по прямым названиям ссылок поиск работает, по спрятанным div`ы - нет. Это нужно исправить. И третье, не менее важное, было бы очень круто, чтобы когда название вводится в поиск и такое значение находится - див открывался и показывал это название.
Пример: в точности так работает поиск который вдохновляет - https://www.exist.ru/Catalog/Global/Cars/Ford/9751/3690003C
Мой код
<input type="text" id="inputSearch" placeholder="Search.." title="Type in a category">
<ul id="list">
<li><a href="#">Детали подвески</a>
<div id="mydiv" style="display:none;">
<ul class="rem">
<li><a href="#">папа</a></li>
<li><a href="#">мама</a></li>
<li><a href="#">я</a></li>
</ul>
</div>
</li>
<li><a href="#">Детали подвески</a>
<div id="mydiv" style="display:none;">
<ul class="rem">
<li><a href="#">жираф</a></li>
<li><a href="#">рыба</a></li>
<li><a href="#">путин</a></li>
</ul>
</div>
</li>
<li><a href="#">CSS</a></li>
<li><a href="#">Node.js</a></li>
</ul>
<script>
function search() {
let input = document.getElementById("inputSearch");
let filter = input.value.toUpperCase();
let ul = document.getElementById("list");
let li = ul.getElementsByTagName("li");
// Перебирайте все элементы списка и скрывайте те, которые не соответствуют поисковому запросу
for (let i = 0; i < li.length; i++) {
let a = li[i].getElementsByTagName("a")[0];
if (a.innerHTML.toUpperCase().indexOf(filter) > -1) {
li[i].style.display = "";
} else {
li[i].style.display = "none";
}
}
}
document.addEventListener('keyup', search);
function viewdiv(id){
var el=document.getElementById(id);
if(el.style.display=="block"){
el.style.display="none";
} else {
el.style.display="block";
}
}
</script>