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

Ukrycie elementu klikając "poza" nim

0 głosów
315 wizyt
pytanie zadane 26 kwietnia 2023 w JavaScript przez zbiku25 Gaduła (3,000 p.)

Hej,

Próbuję zaprogramować stan, w którym klikając poza określony element, dany element zniknie. Niestety kod nie działa. Uprzejma prośba o pomoc.

Kod JS

var lang;
lang = document.querySelector("#language");

function change()
	{
		if (lang.style.display==="none" || lang.style.display=="" )
		{
			lang.style.display="block";
		}
		else
		{
			lang.style.display="none";
		}
	}
	

document.addEventListener('click', function clickOutside(event) {

  if (lang.contains(event.target)) {

  lang.style.display = 'none';

  }

});

 

2 odpowiedzi

0 głosów
odpowiedź 26 kwietnia 2023 przez Comandeer Guru (607,960 p.)

Tak na oko, to ukrywasz element lang tylko wówczas, gdy zawiera on aktualnie kliknięty element – a warunek powinien być raczej odwrotny (czyli ukrywanie wówczas, gdy NIE zawiera aktualnie klikniętego elementu).

Dodatkowo, zamiast operować bezpośrednio na stylach, można operować na klasach w CSS-ie (np. dzięki temu będziesz w stanie zastąpić cały kod w funkcji change() de facto wywołaniem lang.classList.toggle()).

0 głosów
odpowiedź 26 kwietnia 2023 przez VBService Ekspert (256,580 p.)
edycja 26 kwietnia 2023 przez VBService

Proponuje, sprawdź co zawiera event.target

[ on-line ]

document.addEventListener('click', (e) => {
  if (!e.target.matches('.center')) // w tym kontekście, czego nie zawiera
    lang.classList.remove('show');
});

 

 

BTW, sprawdź też taki zapis w ramach ciekawostki, on-line

function change() {
  if (!lang.style.display || lang.style.display == 'none' )
    ...
}

 

Podobne pytania

0 głosów
0 odpowiedzi 282 wizyt
pytanie zadane 25 stycznia 2018 w C i C++ przez GregTheBlackFox Nowicjusz (120 p.)
0 głosów
1 odpowiedź 351 wizyt
pytanie zadane 14 lutego 2019 w JavaScript przez Kinga Nowicjusz (210 p.)
0 głosów
1 odpowiedź 321 wizyt
pytanie zadane 3 sierpnia 2019 w JavaScript przez Magicone Nałogowiec (45,100 p.)

93,734 zapytań

142,671 odpowiedzi

323,293 komentarzy

63,295 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.

...