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

Object Storage Arubacloud
0 głosów
368 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ź 686 wizyt
pytanie zadane 19 lutego 2017 w JavaScript przez maly93 Użytkownik (640 p.)
0 głosów
1 odpowiedź 648 wizyt
pytanie zadane 19 czerwca 2018 w JavaScript przez Wisien Nowicjusz (200 p.)
0 głosów
1 odpowiedź 397 wizyt
pytanie zadane 16 maja 2018 w JavaScript przez kenjiro244 Dyskutant (8,600 p.)

92,572 zapytań

141,423 odpowiedzi

319,645 komentarzy

61,959 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...