• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Chowające się menu po kliknięciu w odnośnik - HTML/JS

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
+1 głos
586 wizyt
pytanie zadane 17 stycznia 2022 w JavaScript przez paweleq96 Nowicjusz (160 p.)

Witam,

Próbuję zrobić, aby responsywne menu się zamykało po kliknięciu w odnośnik "a". Klikając w pierwszy link, menu się zamyka, ale jak klikam w kolejne to pozostaje widoczne. Próbowałem też const nava = document.querySelectorAll('.nav_links a'); Ale wtedy menu nie zamykało się nawet po kliknięciu w pierwszy link.

const navSlide = () => {
    const burger = document.querySelector('.nav_links_menu');
    const nav = document.querySelector('.nav_links');
    const nava = document.querySelector('.nav_links a');

    burger.addEventListener('click', () => {
        nav.classList.toggle('nav_active');
        //Burger Animation
        burger.classList.toggle('toggle');
    })

    nava.addEventListener('click', () => {
        nav.classList.toggle('nav_active');
        burger.classList.toggle('toggle');
    })
}

 

2 odpowiedzi

0 głosów
odpowiedź 17 stycznia 2022 przez VBService Ekspert (256,320 p.)
wybrane 17 stycznia 2022 przez paweleq96
 
Najlepsza

document.querySelectorAll zwraca listę elementów html (NodeList), więc jak chcesz dodać do nich EventListener-a po prostu wykonaj iterację.

 

const nava = document.querySelectorAll('.nav_links a');
nava.forEach((item) => {
  item.addEventListener('click', () => {
    nav.classList.toggle('nav_active');
    burger.classList.toggle('toggle');
  });
});

 

komentarz 17 stycznia 2022 przez paweleq96 Nowicjusz (160 p.)
Dzięki, teraz bardziej rozumiem działanie querySelectorAll.
komentarz 18 stycznia 2022 przez VBService Ekspert (256,320 p.)

Dodając parametr e (event) możesz "zobaczyć", który element z listy został "kliknięty"

 

const nava = document.querySelectorAll('.nav_links a');
nava.forEach((item) => {
  item.addEventListener('click', (e) => {
    // e.target.id, e.target.classList itd.
    console.log(e.target);
  });
});
const nava = document.querySelectorAll('.nav_links a');
nava.forEach((item) => {
  item.addEventListener('click', ({target}) => {
    // target.id, target.classList itd.
    console.log(target);
  });
});

 

What exactly is the parameter e (event) and why pass it to JavaScript functions?

+1 głos
odpowiedź 17 stycznia 2022 przez ScriptyChris Mędrzec (190,190 p.)

Metoda querySelector zwraca jeden element, więc jeśli podepniesz się pod niego na event, to nie złapie on eventów z innych elementów (chyba, że przez delegację, co nie dotyczy elementów w relacji rodzeństwa). Korzystając z querySelectorAll otrzymujesz listę elementów, więc chcąc podpiąć się na każdy z nich potrzebujesz użyć pętli, albo przynajmniej odnieść się do konkretnego elementu przez jego indeks. Możesz alternatywnie skorzystać ze wspomnianego mechanizmu delegacji eventów podpinając się na wspólnego rodzica (lub przodka) linków i w listenerze zmienić klasę klikniętemu linkowi.

Podobne pytania

0 głosów
2 odpowiedzi 135 wizyt
pytanie zadane 13 stycznia 2023 w HTML i CSS przez dezzy Nowicjusz (150 p.)
0 głosów
1 odpowiedź 689 wizyt
pytanie zadane 8 marca 2020 w JavaScript przez eMe Początkujący (340 p.)

93,187 zapytań

142,201 odpowiedzi

322,012 komentarzy

62,514 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 2365p. - dia-Chann
  2. 2315p. - Łukasz Eckert
  3. 2209p. - Łukasz Piwowar
  4. 2037p. - Tomasz Bielak
  5. 2006p. - rucin93
  6. 2006p. - Michal Drewniak
  7. 2005p. - Łukasz Siedlecki
  8. 1964p. - CC PL
  9. 1946p. - Adrian Wieprzkowicz
  10. 1901p. - Mikbac
  11. 1744p. - rafalszastok
  12. 1734p. - Anonim 3619784
  13. 1586p. - Dawid128
  14. 1520p. - Marcin Putra
  15. 1480p. - ssynowiec
Szczegóły i pełne wyniki

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...