• 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.?

VPS Starter Arubacloud
0 głosów
118 wizyt
pytanie zadane 18 stycznia 2021 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 2021 przez Wiciorny Ekspert (269,120 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 2021 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 2021 przez krissto7 Gaduła (3,100 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ź 309 wizyt
0 głosów
1 odpowiedź 453 wizyt
pytanie zadane 22 maja 2018 w C i C++ przez Michael00 Nowicjusz (120 p.)
0 głosów
1 odpowiedź 207 wizyt

92,452 zapytań

141,262 odpowiedzi

319,080 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...