LenovoId
@LenovoId
I want, women not to get sick

Как кликая на ссылку присвоить class пункту меню?

Почти готово ...но кликая на ссылку не знаю как присвоить class="active" родителю этой ссылке
Если промазать - тыкнуть не в ссылку то class`присваивается а вот по ссылке ...тщетно

Как это делается ?
  • Вопрос задан
  • 95 просмотров
Решения вопроса 2
dmitrybascacov
@dmitrybascacov
Кодим и декодим, а иногда кино смотрим
Нужно в одной функции сбросить все активные классы, затем добавить активный класс к текущему элементу и затем выполнять нужные действия:
let parent = document.querySelector("ul");
let child = document.querySelectorAll("ul li");


let anchors = document.querySelectorAll('a[href*="#"]');

for (let anchor of anchors) {
  anchor.addEventListener("click", function (e) {
    e.preventDefault();
    
    for (let i = 0; i < child.length; i++) {
      child[i].classList.remove("active");
    }
    
    e.target.classList.add("active");
    this.parentNode.classList.add("active");
    let blockID = anchor.getAttribute("href").substr(1);

    document.getElementById(blockID).scrollIntoView({
      behavior: "smooth",
      block: "start"
    });
  });
}
Ответ написан
0xD34F
@0xD34F Куратор тега JavaScript
document.querySelector('ul').addEventListener('click', function(e) {
  if (e.target.tagName === 'A') {
    e.preventDefault();

    const li = e.target.closest('li');
    [...this.children].forEach(n => n.classList.toggle('active', n === li));

    document.querySelector(e.target.getAttribute('href')).scrollIntoView({
      behavior: 'smooth',
      block: 'start',
    });
  }
});
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы