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

Dlaczego numer = nrslajdu - 1; w kursie JS Mirosława Z.?

Fiszki IT
Fiszki IT
0 głosów
63 wizyt
pytanie zadane 18 stycznia w JavaScript przez vingilot85 Obywatel (1,150 p.)

Nie potrafię ogarnąć jednej rzeczy w odcinku 2# JS. 
Dla przypomnienia wrzucę kod:
 

<!DOCTYPE html>
<html lang="pl">
<html>
	<head>
		<meta charset="utf-8" />
		
		<style>
			body
			{
				background-color: #222222;
				font-size: 24px;
				color: white;
			}
		</style>
		
		<script src="http://code.jquery.com/jquery-1.11.2.min.js"></script>
		
		<script type="text/javascript">
		
			var numer = Math.floor(Math.random()*5)+1;
			
			var timer1 = 0;
			var timer2 = 0;
			
			function ustawslajd(nrslajdu)
			{
				clearTimeout(timer1);
				clearTimeout(timer2);
				numer = nrslajdu - 1;
				
				schowaj();
				setTimeout("zmienslajd()", 500);
				
			}
			
			function schowaj()
			{
				$("#slider").fadeOut(500);
			}
		
			function zmienslajd()
			{
				numer++; if (numer>5) numer=1;
				
				var plik = "<img src=\"slajdy/slajd" + numer + ".png\" />";
				
				document.getElementById("slider").innerHTML = plik;
				$("#slider").fadeIn(500);
				
				timer1 = setTimeout("zmienslajd()", 5000);
				timer2 = setTimeout("schowaj()", 4500);
			
			}
			
		</script>
		
	</head>
	<body onload="zmienslajd()">
	
		<span onclick="ustawslajd(1)" style="cursor:pointer;">[ 1 ]</span>
		<span onclick="ustawslajd(2)" style="cursor:pointer;">[ 2 ]</span>
		<span onclick="ustawslajd(3)" style="cursor:pointer;">[ 3 ]</span>
		<span onclick="ustawslajd(4)" style="cursor:pointer;">[ 4 ]</span>
		<span onclick="ustawslajd(5)" style="cursor:pointer;">[ 5 ]</span>
		
		<div id="slider"></div>
		
	</body>
</html>

Linia 29. Nie czaję dlaczego tutaj: numer = nrslajdu - 1;  trzeba odjąć jeden.

Czy to dlatego, że w funkcji zmienslajd() numer się inkrementuje (numer++)?

1 odpowiedź

+1 głos
odpowiedź 18 stycznia przez Wiciorny Mędrzec (166,950 p.)

<span onclick="ustawslajd(1)"

<span onclick="ustawslajd(2"

<span onclick="ustawslajd(3)"

do funkcji posyłasz wartości od 1-5 natomiast elementy w tablicy indeksuje się od 0, stąd dla 5 elementów indeksy będa od 0-4 
 gdyby nie ta operacja dla slidera nr 5, funkcja by sie nie wykonała bo warunek 
 

  numer++; if (numer>5) numer=1;

byłby niespełniony numer byłby równy 6. Wiec generalnie ostatni slider nigdy by sie nie wyswietlił gdyż mimo żę jest postinkrementacja, to wartosc ewaluowana jest przed if. 

komentarz 18 stycznia przez vingilot85 Obywatel (1,150 p.)
Ok, w kursie podczas wyjaśniania tego, autor zaznacza nawet numer++  stąd sądziłem, że podkreśla, że to przez inkrementację.
Mimo wszystko zmienna numer (gdzie jest właśnie +1) jest zmienną globalną, więc dlaczego ustawslajd(1-5) musi z powrotem wrócić do domyślnej numeracji (od 0) aby dostać się do pożądanego slajdu?
komentarz 19 stycznia przez krissto7 Bywalec (2,870 p.)
Przecież tutaj nie ma żadnej tablicy wiec nie chodzi o to , z tego co widzę.

Dokładnie to jeśli klikniesz w jakiś span , dajmy na to span onclick="ustawslajd(3)" to wykonuje się funkcja schowaj(), która w 500 milisekund chowa i potem po tych 500 milisekundach od razu się wykonuje pokazanie aktualnego slidu czyli funkcja zmienslajd(),

funkcja zmienslajd() zawsze inkrementuje numer(index) więc stąd bierze się to -1

dla objaśnienia jeśli klikniesz w ustawslajd(3) to numer musi się równać 2 , żeby potem jak się wywoła finalnie funkcja zmienslajd() nastąpiła inkrementacja i wtedy uzyskasz właśnie ten 3 slajd. funkcja ustawslajd nie zmienia slajdu , tylko wywołuje funkcje , która się tym zajmie.

Podobne pytania

0 głosów
1 odpowiedź 246 wizyt
0 głosów
1 odpowiedź 234 wizyt
pytanie zadane 22 maja 2018 w C i C++ przez Michael00 Nowicjusz (120 p.)
0 głosów
1 odpowiedź 111 wizyt
Porady nie od parady
Odznacz odpowiedź zieloną fajką, jeśli uważasz, że jest ona najlepsza ze wszystkich i umożliwiła ci rozwiązanie problemu.Najlepsza odpowiedź

84,762 zapytań

133,562 odpowiedzi

295,998 komentarzy

56,017 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...