Zakres zmiennej pętli for JavaScript

0

Witam, mimo iż rozwiązałem już ten problem, ciekawi mnie dlaczego nie działa mi ten przykład. Stworzyłem pętle która po kliknięciu zaznacza aktywne elementy navbara. Wszystko działa, tylko zmienna i pętli for nie jest rozpoznawana wewnątrz funkcji, a mianowicie chodzi o menu_links[i]. W konsoli zwraca wartość undefined. Wiem, że mogę użyć słowa kluczwego this, lecz zastanawia mnie dlaczego nie działa to w takiej postaci.

const menu_links = document.querySelectorAll('.menu-link');
const active = document.querySelectorAll('.link-mark');

for (var i = 0; i < menu_links.length; i+=1) {
    
    menu_links[i].addEventListener('click', function () {
        var current = document.getElementsByClassName("active");
        current[0].className = current[0].className.replace("active", "");
        menu_links[i].classList.add("active");
        
    })

}
0

Poczytaj sobie o tym, jak działają domknięcia (ang. closure) w JSie - istnieją (przynajmniej) dwa sposoby "łapania" zmiennych do środka funkcji, które różnią się sposobem działania.

0

serio tworzysz listener do każdego linku w menu?:D

lepiej stworzyć listener na caly element menu, w którym sprawdzasz który link został kliknięty i nadajesz klase active a reszcie petla zabierasz

1 użytkowników online, w tym zalogowanych: 0, gości: 1