Slideshow (+php)

Operator_Jon

Erfahrenes Mitglied
Hi Leute!

Ich versuche eine kleine Slideshow (nix großartiges) zu erstellen.
Ich lasse erstmal Code sprechen ^^
PHP:
<script type="text/javascript">
		    var intv;
			var pics = new Array();
			var pic_names = new Array();
			var curr_pic = 0;
			var interv;
			
			function start() {
				intv = document.form.intv.value+"000";
				intv = parseFloat(intv);
				interv = window.setInterval("give_new_pic()",intv);
			}
			<?
				$dir = opendir("pics/".$row['folder']);
				while ($file = readdir($dir)) {
				    if ($file != "." AND $file != "..") {
						if (count(explode("_thb",$file)) != 2) {
						    $pics[] = $file;
						}
					}
				}
				closedir($dir);
				sort($pics);
				for ($i=0;$i<=count($pics)-1;$i++) {
					?>
						pic_names[<?=$i?>] = "pics/<?=$row['folder']?>/<?=$pics[$i]?>";
						pics[<?=$i?>] = new Image;
						pics[<?=$i?>].src = pic_names[<?=$i?>];
					<?
				}
				$pic_anz = count($pics);
			?>
			function give_new_pic() {
				if (curr_pic == <?=$pic_anz?>) {
					curr_pic = 0;
				}
				document.img.src = pics[curr_pic].src;
				curr_pic++;
			}
			
			function stop() {
				window.clearInterval(interv);
			}
		</script>
Sollte ja selbsterklärend sein ^^
Was mich nun verwundert ist, das das Script im Mozilla Funktionsfähig ist, jedoch im IE einen Fehler in der "start()" Funktion meldet...

/€dit:
Für die die kein PHP können (;)):
PHP:
<?
				$dir = opendir("pics/".$row['folder']);
				while ($file = readdir($dir)) {
				    if ($file != "." AND $file != "..") {
						if (count(explode("_thb",$file)) != 2) {
						    $pics[] = $file;
						}
					}
				}
				closedir($dir);
				sort($pics);
				for ($i=0;$i<=count($pics)-1;$i++) {
					?>
						pic_names[<?=$i?>] = "pics/<?=$row['folder']?>/<?=$pics[$i]?>";
						pics[<?=$i?>] = new Image;
						pics[<?=$i?>].src = pic_names[<?=$i?>];
					<?
				}
				$pic_anz = count($pics);
			?>
Macht nichts anderes als das Array "pics" zu füllen...

Hoffe mir kann da jmd. helfen!

Danke
 
Zuletzt bearbeitet:
Ich habe 2 Vermutungen:
Code:
function start() { 
                intv = document.form.intv.value+"000";  //1
                intv = parseFloat(intv); 
                interv = window.setInterval("give_new_pic()",intv); //2
            }
1) JavaScript kann sich manchmal nicht entscheiden (oder ist undurchschaubar in der Erkennungsmethode :-) ), und intv wird hier als Float gerechnet, sprich: es kommt intv als ergebnis zurueck, und nicht intv mit drei Nullen dahinter.

2.) Um ehrlich zu sein, kenn ich diesen Befehl nicht, meinst du vielleicht setTimeOut()? Der geht im IE.

HTH
 
Ok...
Code:
function start() { 
                intv = document.form.intv.value+"000";  //1
                intv = parseFloat(intv); 
                interv = window.setInterval("give_new_pic()",intv); //2
}
1) Ist doch klar :D intv wird mit dem Wert (z.b. 3) belegt und es werden 3 Nullen angehängt. Nun ist intv aber ein String, um ihn zu einer Zahl zu konvertieren um mit selbiger weiterarbeiten zu können muss ich die Variable ja erst umwandeln!

2) : http://de.selfhtml.org/javascript/objekte/window.htm#set_interval ;)
 
Ok, blöder Fehler!
Code:
function start() {
...
<input type="button" value="Start" onClick="javascript:start()">
...
muss einfach ersetzt werden durch:
Code:
function starte() {
...
<input type="button" value="Start" onClick="javascript:starte()">
...
z.B.
Naja, mal wieder was neues gelernt, undzwar das die Funktion "start()" im IE ein reservierter Name ist :rolleyes:

Trotzdem Danke
 

Neue Beiträge

Zurück