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

Javascript / jquery niedziałająca funkcja bez błędów

VPS Starter Arubacloud
0 głosów
255 wizyt
pytanie zadane 25 maja 2021 w JavaScript przez Doge Gaduła (3,420 p.)

Witam, mam następujący kod:

window.addEventListener('load', wczytanie);
var ajdi = "";
var ajdi2 = "";
function wczytanie()
{
	$('.menu_bok').click(function()
	{
		ajdi = $(this).attr('id');
		ajdi2 = "#"+ajdi;
	});
	$(ajdi2).css("background-color","red");
	$(ajdi2).css("color","white");
	$(".menu_bok:not(ajdi2)").css("background-color","rgb(157, 168, 168)");
	$(".menu_bok:not(ajdi2)").css("color","black");
}

Nie wyskakują żadne błędy w przeglądarce, w menu_bok wywoływana jest funkcja "wczytanie", przy alercie poprawnie pokazuje zmienne, lecz ostatnie 4 linijki funkcji nie działają. O co chodzi? Czy na przykład w jQuery nie można dać $(tutaj) nazwy zmiennej czy jak? Przy wpisywaniu konkretnego id $(tutaj) prawidłowo podmienia kolory. Prosiłbym o wyjaśnienie.

komentarz 25 maja 2021 przez Paweł Nąckiewicz Nałogowiec (48,990 p.)
Nie wiem co to za bład, ale proszę... nie ucz się JQuery w 2021 jeśli nie musisz :)
komentarz 26 maja 2021 przez Doge Gaduła (3,420 p.)
Dlaczego nie powinienem się go uczyć? Czy jest jakiś nowszy, lepszy i łatwiejszy do nauki odpowiednik? Ponieważ u pana Mirosława Zelenta słyszałem, że jest to dobry język, lecz poradnik jest sprzed paru lat i może się coś zmieniło. I czy da się np. zrobić automatyczny animowany slider ze zdjęciami w samym javasripcie?
komentarz 26 maja 2021 przez Paweł Nąckiewicz Nałogowiec (48,990 p.)

1 odpowiedź

+3 głosów
odpowiedź 25 maja 2021 przez Comandeer Guru (604,400 p.)
wybrane 26 maja 2021 przez Doge
 
Najlepsza

Można dać, tylko że Ty nie dałeś ;) W Twoim kodzie ajdi2 jest traktowane jako string. Musisz użyć albo template literals, albo konkatenacji stringów:

// Template literals.
`.menu_bok:not(${ ajdi2 })`

// Konkatenacja
".menu_bok:not(" + ajdi2 + ")"

To jeden błąd. Drugi związany jest z tym, kiedy są wywoływane te 4 linijki: od razu, gdy zachodzi zdarzenie load. A wartość zmiennej ajdi2 jest nadawana dopiero po kliknięciu. Powinieneś przenieść te 4 linijki do środka click, żeby się odpalały przy każdym.

Podobne pytania

0 głosów
1 odpowiedź 841 wizyt
0 głosów
1 odpowiedź 188 wizyt
pytanie zadane 3 lipca 2017 w JavaScript przez Jonki Dyskutant (8,180 p.)

92,834 zapytań

141,778 odpowiedzi

320,826 komentarzy

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

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!

...