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

question-closed Kod js tworzący przycisk nie działa

Object Storage Arubacloud
0 głosów
175 wizyt
pytanie zadane 9 czerwca 2020 w JavaScript przez Marak123 Stary wyjadacz (11,190 p.)
zamknięte 9 czerwca 2020 przez Marak123

Mam problem z kodem który odpowiada za przełączanie przycisku nie wiem dlaczego nie działa. Są dwa divy 1-class="switch" 2-class="kolo" dodałem bibliotekę jquery a to jest kod który nie działa:

                var zmien = 0;
		$('switch').addEventListener("click", function(siema) {
		  if (zmien === 0) {
			$('switch').addClass('switch_click');
			$('switch').removeClass('switch');
			$('kolo').addClass('kolo_click');
			$('kolo').removeClass('kolo');
			zmien = 1;
		  } else {
			$('switch').addClass('switch');
			$('switch').removeClass('switch_click');
			$('kolo').addClass('kolo');
			$('kolo').removeClass('kolo_click');
			zmien = 0;
		  }
		});

 Wie ktoś może czamu nie działa? Dodam jeszcze ze w konsoli pisze "Uncaught TypeError: $(...).addEventListener is not a function"

komentarz zamknięcia: Dzięki wszystkim za pomoc

2 odpowiedzi

0 głosów
odpowiedź 9 czerwca 2020 przez pablop76 VIP (123,180 p.)
wybrane 9 czerwca 2020 przez Marak123
 
Najlepsza

Nie podałeś w kodzie czy switch i kolo to id czy klasa

selecting elements

komentarz 9 czerwca 2020 przez Marak123 Stary wyjadacz (11,190 p.)

Zrobiłem to trochę prościej po prostu zmieniłem nazwe id zamiast kombinować z odpinaniem class

kod wygląda tak tez:

var zmien = 0;
var zmiana = "switch";
var id = document.getElementById(zmiana);

id.addEventListener("click", function(siema){
  if (zmien === 0) {
    document.getElementById('switch').id = 'switch_click';
		document.getElementById('kolo').id = 'kolo_click';
    zmien = 1;
  } 
	else {
    document.getElementById('switch_click').id = 'switch';	
		document.getElementById('kolo_click').id = 'kolo';	
    zmien = 0;
  }
});

 

komentarz 9 czerwca 2020 przez ScriptyChris Mędrzec (190,190 p.)

Czemu zmieniasz id elementów na kliknięcie? Tak nie powinno się robić. Jeśli chcesz zmienić style tym elementom, to przestawiaj im klasy CSS, a nie zmieniaj ID.

komentarz 9 czerwca 2020 przez Marak123 Stary wyjadacz (11,190 p.)
Jak działa to czemu nie
komentarz 9 czerwca 2020 przez ScriptyChris Mędrzec (190,190 p.)
Bo jeśli zmienisz ID elementu, a inny skrypt będzie się chciał pod niego podpiąć nie wiedząc o zmienionym ID, to nie złapie tego elementu. Jeśli zbudujesz link z kotwicą odnoszącą się do zmienionego ID, to ona nie przeniesie użytkownika do tej sekcji po otwarciu strony. Poza tym, nie jest dobrą praktyką stylowanie po ID, powinno się to robić używając klas.

A podejście "jak działa to czemu nie" daleko Cię w IT nie zaprowadzi.
komentarz 9 czerwca 2020 przez Marak123 Stary wyjadacz (11,190 p.)
edycja 9 czerwca 2020 przez Marak123
dlatego po to dałem zmienną która ustawia prawidłowe id dla tego elementu

edit:

Dodam jeszcze ze jest tam zmienna o nazwie zmiana która ma wartość "switch" ale ta zmienna nie jest nigdzie ustawiana w if ale i tak działa i myślę ze działa to dlatego ze js zmienia tylko dla siebie id diva a w html zostaje cały czas takie same id
+1 głos
odpowiedź 9 czerwca 2020 przez eunstachy Stary wyjadacz (14,180 p.)

Z całym szacunkiem ale Twój kod już na pierwszy rzut oka wygląda po prostu bardzo źle. Może zamiast pytać się co nie działa opisz co chcesz osiągnąć i poproś o wskazówki. Najpierw z diva o klasie kolo usuwasz tą klasę

$('kolo').removeClass('kolo');

a następnie w else próbujesz się odwołać do elementu z którego wcześniej klasę usunąłeś 

$('kolo').addClass('kolo');
komentarz 9 czerwca 2020 przez Marak123 Stary wyjadacz (11,190 p.)
Tak myślałem ze to jest ten błąd

Podobne pytania

0 głosów
1 odpowiedź 214 wizyt
pytanie zadane 28 lutego 2017 w JavaScript przez Crazzier Początkujący (350 p.)
0 głosów
2 odpowiedzi 477 wizyt
pytanie zadane 11 września 2017 w JavaScript przez svyatogor92 Użytkownik (670 p.)
0 głosów
3 odpowiedzi 196 wizyt
pytanie zadane 24 lipca 2018 w JavaScript przez stefan1717 Nowicjusz (120 p.)

92,615 zapytań

141,465 odpowiedzi

319,781 komentarzy

61,997 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!

...