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

Błąd w konsoli - Jquery - zmienna lokalna

Object Storage Arubacloud
0 głosów
597 wizyt
pytanie zadane 25 czerwca 2016 w JavaScript przez bart_as93 Nowicjusz (150 p.)

Część, 

Mam problem z jquery. Mianowicie w przeglądarce wyskakuje mi błąd:

W Chrome:[javascript.js:47] Uncaught TypeError: Cannot read property 'removeClass' of undefined
W Firefox: TypeError: nav[stare_i] is undefined, javascript.js:47:6 

47 linijke kodu (ta z błędem) - jest koloru czerwonego poniżej:

function arrowright(){
		zakladka[i].stop().animate({'left':'120%', 'opacity' : '0'},500,function(){
			$(this).hide();
				var stare_i = i;
				if(i>=zakladka.length-2){i=0}
				else {i++};
				zakladka[i].stop().animate({'left':'-100%'},1,function(){
					$(this).show().stop().animate({'left':'0', 'opacity':'1'},500);
					nav[i].addClass('active');
					nav[stare_i].removeClass('active');
				});//koniec callbacku animate drugorzednego						
		});//koniec callbacku animate
	};//koniec funkcji arrowright

Skrypt - Strona jaką tworzę jest typu one-page z menu u góry oraz w centralnej czesci strony contentem oraz strzałki po bokach przez które można przechodzić z jednego kontentu do drugiego. 

47 linijka kodu ma za zadanie - usunąć klasę z menu u góry tak aby poprzedni kontent nie był już "aktywny" 

Zamieszczam stronę na serwerze, abyście mogli sami zobaczyć błąd w konsoli:  http://mrsandwich.pl/

oraz kod całego javascriptu: http://wklej.org/id/2629624/

 

Należy zaznaczyć, że kod wykonuje się - wszystko działa jak powinno - ale tak i tak błąd wyskakuje. 

Zależy mi na solidnej nauce tego języka - dlatego wolałbym rozwiązać ten problem, i wiedzieć co źle zrobiłem. 

Z góry dziękuję za odpowiedź,

Pozdrawiam
 

2 odpowiedzi

0 głosów
odpowiedź 25 czerwca 2016 przez niezalogowany

Ale żeś tam namieszał w tym JavaScripcie..

var zakladka = [];
	zakladka[0]=$('#galeria');
	zakladka[1]=$('#newsletter');
	zakladka[2]=$('#wspolpraca');
	zakladka[3]=$('#kontakt');
	zakladka[4]=$('#glowna');
	
var nav =[];
for (var z=0; z < zakladka.length-1; z++){
	nav[z]=$('.nav'+z);
}//koniec for 

Twój for zdefiniuje tablicę nav z indeksami od 0 do 3

var i = zakladka.length-1;

Zmienna i przyjmuje wartość 4

var stare_i = i;

Zmienna stare_i przyjmuje wartość 4

nav[stare_i].removeClass('active');

nav[ 4 ]. <- próbujesz odwołać się do obiektu, który de facto nie istnieje, stąd konsola rzuca błędem.

komentarz 25 czerwca 2016 przez bart_as93 Nowicjusz (150 p.)
Dzięki wielkie! ;-) i teraz wszystko jasne ;-)))

Co do namieszania, to mógłbyś mi tak pokrótce napisać co byś uprościł? ;-)
0 głosów
odpowiedź 25 czerwca 2016 przez MichuDev Pasjonat (20,300 p.)

Co do jakości kodu:

Aby robić zmienne lokalne w JavaScript używa się domknięć albo nowego sposobu zamiany "var" na "let".

Domknięcia: 

var x = 1000;

(function() {
       var x = 100;
 })(); 

alert(x); // wypisze 1000

W przypadku dobrego działania napisał  Argeento.

Podobne pytania

+1 głos
1 odpowiedź 4,844 wizyt
pytanie zadane 24 kwietnia 2018 w C# przez DODO Bywalec (2,950 p.)
+1 głos
1 odpowiedź 386 wizyt
pytanie zadane 26 czerwca 2020 w C i C++ przez Kacperek_code Obywatel (1,690 p.)
0 głosów
3 odpowiedzi 434 wizyt
pytanie zadane 19 stycznia 2020 w C i C++ przez xZenit Użytkownik (760 p.)

92,554 zapytań

141,399 odpowiedzi

319,535 komentarzy

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

...