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

Miganie obrazka.

VPS Starter Arubacloud
0 głosów
766 wizyt
pytanie zadane 30 września 2015 w JavaScript przez Krzysztof Wielgat Nowicjusz (220 p.)
<SCRIPT language="javascript" type="text/javascript">
var speed = 500;
var picNo = 0;
var pics = new Array
(
  'img/miganie1.png',
  'img/miganie2.png'
                        
);

function miganie()
{
  document.getElementById('now').src = pics[picNo++];
  if (picNo > pics.length) picNo = 0;
  setTimeout('miganie()', speed);
 
}
</SCRIPT>

</head>

<body onload="miganie();">

    <div id="mig"><img id="now" src="img/miganie1.png" onclick='miganie()'></div>

</body>

 

Otóż migać, miga jednak pojawia się ciągle brak obrazka w lewym górnym rogu. Jak temu zaradzić?

I przy okazji jeśli chciałbym napisać skrypt:

Sa 3 obrazki>po kliknieciu w pierwszy obrazek 1 zmienia sie na inny (reszta bez zmian)>wraca do stanu>obrazek 2 zmienia sie na inny (reszta bez zmian)>wraca do stanu> obrazek 3 zmienia sie na inny (reszta bez zmian)>zakonczenie petli.

Gdzie się kierować aby rozwiązać problem?

1 odpowiedź

+1 głos
odpowiedź 1 października 2015 przez Schizohatter Nałogowiec (39,600 p.)
A więc tak. Tablica Twoja ma dwa elementy, czyli te elementy posiadają indeks [0] oraz [1].

Natomiast tablica.length zwraca 2. Twój warunek picNo > pics.length powoduje, że picNo = 2 też przechodzi, bo 2 nie jest większe od 2. A indeksu [2] w tablicy nie masz.

Dalej: zawsze próbujesz pobierać wartość picNo++, czyli gdy zmienna ma już wartość 2, to Ty jeszcze ją powiększasz o 1, więc próbujesz pobrać obrazek z indeksem 3, którego też oczywiście nie ma. Dodatkowo - gdy ustawiasz zmienną na 0, to potem od razu ją powiększasz o 1, więc obrazek o indeksie [0] w ogóle nie ma prawa działać, w związku z czym działa Ci tylko obrazek drugi o indeksie [1], mam rację?

Rozumiesz problem? Musisz po pierwsze zmienić warunek, a po drugie najpierw wyświetlać, a potem zwiększać wartość.
komentarz 8 października 2015 przez Krzysztof Wielgat Nowicjusz (220 p.)

Dzięki, poprawiłem ;-))

<script>
		var time = 500;
		var picNo = 0;
		var pics = new Array
		(
		  'img/miganie1.png',
		  'img/miganie2.png'
		);

		function miganie()
		{			
		  document.getElementById('now').src = pics[picNo++];
		  if (picNo > 1) picNo =0;
			
		  
		  setTimeout('miganie()', time);
		  clearTimeout('miganie()');	 
		}
</script> 
</head> 
<body onload="miganie();">
    <img id="now"> 
</body>

 

Podobne pytania

0 głosów
2 odpowiedzi 121 wizyt
pytanie zadane 26 września 2020 w JavaScript przez SZYMII Użytkownik (510 p.)
0 głosów
2 odpowiedzi 164 wizyt
pytanie zadane 28 października 2016 w HTML i CSS przez Giovacho Użytkownik (960 p.)
+1 głos
1 odpowiedź 108 wizyt
pytanie zadane 19 kwietnia 2023 w C# przez Mati336 Użytkownik (560 p.)

92,455 zapytań

141,263 odpowiedzi

319,100 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!

...