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

Не срабатывает выпадающее меню при делегировании. Почему?

Здравствуйте.
Не могу понять что я делаю не так. Пытаюсь делегировать события и удалять/добавлять класс по клику. Сам я новичок. Понимаю что здесь что-то не так, но не до конца что конкретно.

const menu = document.getElementsByClassName('.menu-list')[0]; 
const click = document.querySelectorAll('.style'); 
const list = document.querySelectorAll('.menu'); 

menu.onclick = function(event) { 
const target = event.target; 
if(target.className != click) return 
tumbler(target); 
} 

function tumbler(node) { 
menu = node; 
menu.classList.add('.menu'); 
if (list) { 
menu.classList.remove('.menu'); 
} 
}


<ul class="menu-list">
		    <li>
		    <div class="style"><a class="style-txt">Меню1</a><span class="style__arrow_1"></div>
		    <ul class="menu">
					<li><a href="">аааа</a></li>
					<li><a href="">аааа</a></li>
					<li><a href="">аааа</a></li>
					<li><a href="">аааа</a></li>
					</ul>
				</li>
				<li><div class="style"><a class="style-txt">Меню2<span class="style__arrow_2"></span></a><div>
					<ul class="menu">
					<li><a href="">аааа</a></li>
					<li><a href="">аааа</a></li>
					<li><a href="">аааа</a></li>
					<li><a href="">аааа</a></li>
					</ul>
				</li>
					</ul>
  • Вопрос задан
  • 66 просмотров
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 1
YumeReaver
@YumeReaver
Бургомистр
const menu = document.getElementsByClassName('.menu-list')[0];

getElementsByClassName - аргументом должно быть название класса без css-селектора (.).
Если бы использовали querySelectorAll(".menu-list"), тогда селектор указывать надо.
const click = document.querySelectorAll('.style'); 
const list = document.querySelectorAll('.menu'); 
if(target.className != click) return 
tumbler(target); 
}

Используйте метод elemenet.classList.contains(className). Возвращается true если у элемента есть класс и false - если нет.
if (list) { 
menu.classList.remove('.menu'); 
}

Тут то же самое.
menu.classList.add('.menu'); 
if (list) { 
menu.classList.remove('.menu'); 
}

Сначала класс добавили, потом удалили.
Ответ написан
Ваш ответ на вопрос

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

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