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

JS - addEventListener reaguje tylko na pierwszy element menu.

Mały hosting, OGROMNE możliwości
0 głosów
582 wizyt
pytanie zadane 7 maja 2019 w JavaScript przez starnaw1998 Początkujący (290 p.)
zmienione kategorie 7 maja 2019 przez Arkadiusz Waluk

Hej, mam mały problem dotyczący JS`a, za pomocą addEventListener chciałem, aby funkcja przy "kliku" na element menu, zmieniała właściwość  innego elementu na stronie. Niby wszystko śmiga, ale całą operacje wykonuje tylko pierwszy element menu, po którego kliknięciu zmienia się ta właściwość, o którą mi chodzi. Reszta przycisków nie działa tak samo, mimo, że ma tą samą klasę. Ratujcie :// 

var el1 = document.querySelector(".fmenu");

var el2 = document.querySelector(".main");

el1.addEventListener("click", function() {
   el2.style.display = "none";
});

 

1 odpowiedź

+2 głosów
odpowiedź 7 maja 2019 przez niezalogowany
wybrane 7 maja 2019 przez ScriptyChris
 
Najlepsza
document.querySelector(".fmenu")

Zwraca pierwszy napotkany element z klasą fmenu. Tylko do tego jednego elementu dodajesz listener - dlatego reszta elementów "nie działa"

komentarz 7 maja 2019 przez starnaw1998 Początkujący (290 p.)
Dziękuję za odpowiedź! A czy jest jakaś opcja, która pozwoli na dodanie go do wszystkich elementow?
1
komentarz 7 maja 2019 przez niezalogowany

Jest document.querSelectorAll, który zwróci wszystkie elementy z daną klasą. Wtedy za pomocą pętli (na przykład forEach) możesz przypisać listener do każdego elementu z osobna.

Trochę bardziej eleganckim rozwiązaniem jest zastosowanie event delegation.

komentarz 7 maja 2019 przez starnaw1998 Początkujący (290 p.)

Przyznam, że specem nie jestem i wydziergałem coś takiego:

var el1 = document.querySelectorAll(".fmenu");

var el2 = document.querySelector(".main");

el1.forEach(function() {
    el1.addEventListener("click", function() {
        el2.style.display = "none";
});
});

Jak się domyślasz, nie działa frown.  Czy to jakiś błąd w pętli? 

1
komentarz 7 maja 2019 przez niezalogowany
komentarz 8 maja 2019 przez starnaw1998 Początkujący (290 p.)
Ok, rozsierdziło mnie to wczoraj, a dzisiaj wszedłem, zmieniłem jedną wartość i śmiga, dziękuje! :D

Podobne pytania

0 głosów
1 odpowiedź 1,111 wizyt
pytanie zadane 19 lutego 2017 w JavaScript przez maly93 Użytkownik (640 p.)
0 głosów
1 odpowiedź 863 wizyt
pytanie zadane 19 czerwca 2018 w JavaScript przez Wisien Nowicjusz (200 p.)
0 głosów
1 odpowiedź 674 wizyt
pytanie zadane 16 maja 2018 w JavaScript przez kenjiro244 Dyskutant (8,600 p.)

93,719 zapytań

142,632 odpowiedzi

323,264 komentarzy

63,266 pasjonatów

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

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...