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

Miganie obrazka.

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
0 głosów
838 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 216 wizyt
pytanie zadane 26 września 2020 w JavaScript przez SZYMII Użytkownik (510 p.)
0 głosów
2 odpowiedzi 205 wizyt
pytanie zadane 28 października 2016 w HTML i CSS przez Giovacho Użytkownik (960 p.)
+1 głos
1 odpowiedź 160 wizyt
pytanie zadane 19 kwietnia 2023 w C# przez Mati336 Użytkownik (560 p.)

93,187 zapytań

142,203 odpowiedzi

322,023 komentarzy

62,515 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 2581p. - dia-Chann
  2. 2537p. - Łukasz Piwowar
  3. 2528p. - Łukasz Eckert
  4. 2514p. - CC PL
  5. 2476p. - Tomasz Bielak
  6. 2445p. - Łukasz Siedlecki
  7. 2443p. - rucin93
  8. 2201p. - Michal Drewniak
  9. 2156p. - Marcin Putra
  10. 2152p. - Adrian Wieprzkowicz
  11. 2105p. - Mikbac
  12. 1941p. - Anonim 3619784
  13. 1733p. - rafalszastok
  14. 1701p. - Michał Telesz
  15. 1580p. - ssynowiec
Szczegóły i pełne wyniki

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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...