Christian W: Slideshow erst nach einem Reload möglich

Beitrag lesen

Hallo,

ich habe eine Slideshow mittels Javascript programmiert, die jedoch erst nach einem Reload der Seite (nicht Neustart des Browsers) funktioniert. Die funktioniert startSlideshow() wird immer erst nach einem Reload ausgeführt, weswegen ich dachte, es sei ein Fehler in der check()-Funktion, aber ich wüsste nicht wo.

Was meint ihr?

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
  "http://www.w3.org/TR/html4/loose.dtd">  
<html>  
<head>  
	<meta http-equiv="Content-Type" content="text/html; charset:utf-8">  
	<title>Slideshow</title>  
	<script type="text/javascript">
		const MAX = 4;  
		var curImg = 0;  
		var images = new Array(MAX);  
		var done = new Array(MAX);  
		var obj; //= document.getElementById("slideshowImg");  
		  
		function onLoad()  
		{  
			obj = document.getElementById("slideshowImg");  
  
			//alert("start now");  
			//alert(obj.id);  
			for(i = 0; i < MAX; i++)  
			{  
				images[i] = new Image();  
				images[i].src = "./images/" + i + ".jpg";  
				  
				done[i] = false;  
				  
				setTimeout("check(" + i + ")", 10);  
			}  
		}  
		  
		function check(imgNum)  
		{  
			//alert("start check " + imgNum);  
			if(images[imgNum].complete == true)  
			{  
				alert(imgNum + "isComplete");  
				done[imgNum] = true;  
				checkAll();  
			}  
			else  
			{  
				//alert("else setTimeout")  
				setTimeout("check(" + i + ")", 10);  
				alert("call check(" + i + ")");  
			}  
		}  
		  
		function checkAll()  
		{  
			//alert("checkAll");  
			for(i = 0; i < MAX; i++)  
			{  
				if(done[i] == false)  
				{  
					return;  
				}  
			}  
  
			alert("start slideshow");  
			startSlideshow();  
		}  
		  
		function startSlideshow()  
		{  
			//alert("start slideshow");  
			obj.src = images[0].src;  
			curImg++;  
			  
			window.setInterval("nextImage()", 5000);  
		}  
		  
		function nextImage()  
		{  
			//alert("nextImage " + curImg);  
			if(curImg >= MAX)  
			{  
				curImg = 0;  
			}  
			  
			obj.src = images[curImg].src;  
			curImg++;  
		}
	</script>  
</head>  
<body onload="onLoad()">  
	<div id="slideshow">  
		<img id="slideshowImg" src="" alt="">  
	</div>  
</body>  
</html>

Wenn ich es (dank der alerts) richtig verstanden habe, wird check() ausgeführt, obwohl die Slideshow schon läuft. Das könnte den Fehler verursachen. Ich weiß nur nicht wieso, da ich ja die checkAll-Funktion habe, die ja rein theoretisch startSlideshow() nur ausführen sollte, wenn wirklich alle als geladen markiert sind. :/

Danke,

Gruß
Christian