• 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.

Cloud VPS
0 głosów
474 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ź 936 wizyt
pytanie zadane 19 lutego 2017 w JavaScript przez maly93 Użytkownik (640 p.)
0 głosów
1 odpowiedź 731 wizyt
pytanie zadane 19 czerwca 2018 w JavaScript przez Wisien Nowicjusz (200 p.)
0 głosów
1 odpowiedź 584 wizyt
pytanie zadane 16 maja 2018 w JavaScript przez kenjiro244 Dyskutant (8,600 p.)

93,456 zapytań

142,451 odpowiedzi

322,721 komentarzy

62,837 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

Kursy INF.02 i INF.03
...