Как сделать аккордеон на JS
Делаю аккордеон, логику его работы такая: при наведении на родительский элемент, появляется дочерний.
Вкладок аккордеона несколько.
<div class="catalog-content">
<ul>
<li class="accordion-parent" data-id="menu-1">Текст родительского элемента</li>
<li class="accordion-parent" data-id="menu-2">Текст родительского элемента</li>
<li class="accordion-parent" data-id="menu-3">Текст родительского элемента</li>
</ul>
</div>
<div class="subcatalog-content">
<ul class="accordion-child" data-id="menu-1" style="display: none;">
<li>Произвольный текст дочернего элемента</li>
<li>Произвольный текст дочернего элемента</li>
</ul>
<ul class="accordion-child" data-id="menu-2" style="display: none;">
<li>Произвольный текст дочернего элемента</li>
<li>Произвольный текст дочернего элемента</li>
</ul>
<ul class="accordion-child" data-id="menu-3" style="display: none;">
<li>Произвольный текст дочернего элемента</li>
<li>Произвольный текст дочернего элемента</li>
</ul>
</div>
<style>
.block {
display: block!important;
}
</style>
Я накинул свой вариант, но оно не работает
var accordIndex = document.querySelector('.catalog-content ul').childNodes.length;
for (i = 1; i < accordIndex+1; i++) {
document.querySelector('.accordion-parent[data-id="menu-'+i+'"]').addEventListener('mouseover', function() {
document.querySelector('.accordion-child[data-id="menu-'+i+'"]').classList.add('block');
});
};
Подскажите, пожалуйста, что можно сделать, какой логикой руководствоваться?) Спасибо!
Источник: Stack Overflow на русском