LenovoId
@LenovoId
svg, css,js

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

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

Как это делается ?
  • Вопрос задан
  • 131 просмотр
Решения вопроса 2
dmtrbskkv
@dmtrbskkv
Кодим и декодим, а иногда кино смотрим
Нужно в одной функции сбросить все активные классы, затем добавить активный класс к текущему элементу и затем выполнять нужные действия:
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
const li = document.querySelectorAll('li');
li.forEach(n => n.addEventListener('click', onClick));

function onClick(e) {
  e.preventDefault();
  li.forEach(n => n.classList.toggle('active', n === this));
  const href = this.querySelector('a').getAttribute('href');
  document.querySelector(href).scrollIntoView({
    behavior: 'smooth',
  });
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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