2012-04-11 10 views
0

Ich benutze diesen Code, um Array von test.php Ausgabe zu lesen, sortieren Sie es und zeigen Sie dann die Ergebnisse wie eine Diashow.JavaScript Bilder nacheinander zeigen

In dieser Zeile stimmt etwas nicht, da nur eines der Bilder angezeigt wird.

curimg= (curimg < galleryarray.length) 
    curimg + 1; 

hier ist der Code:

> <script type="text/javascript"> 
> var curimg=0; 
> function rotateimages(){ 
> galleryarray.sort(); 
> document.getElementById("picsimg").setAttribute("src", "images/"+galleryarray[curimg]); 
> curimg= (curimg < galleryarray.length); 
> curimg + 1; 
> } 
> 
> window.onload = function(){ 
> setInterval("rotateimages()", 2000); 
> } 
> 
> setTimeout(function(){ 
> window.location.reload(1); 
> }, 20000); 
> 
> </script> 
> 

, was ist falsch mit meinem Code?

ein anderes Problem, das ich habe, ist, dass, wenn ich die Seite zum ersten Mal lade es zeigt eine leere Seite für 2000 Millisekunden. // oder welcher Wert auch immer ich oben eingestellt habe.

Entweder tritt die Verzögerung ein, bevor die Bilder geladen werden oder irgendwie ist meine Zählung falsch. wie das zu beheben?

dies ist die Ausgabe von meinem PHP-Code:

var galleryarray = new Array(); 
galleryarray[0] = "image1.jpg"; 
galleryarray[1] = "image5.jpg"; 
galleryarray[2] = "image2.jpg"; 
galleryarray[3] = "image4.jpg"; 
galleryarray[4] = "image8.jpg"; 
galleryarray[5] = "image7.jpg"; 
galleryarray[6] = "image0.jpg"; 
galleryarray[7] = "image3.jpg"; 
galleryarray[8] = "image6.jpg";​ 

Antwort

0

In der Zeile

curimg= (curimg < galleryarray.length); 

Sie die curimg in einen Booleschen Wert setzen (1 oder 0). Was Sie tun müssen, ist es, die Linien als

if(curimg < galleryarray.length) 
    curimg = curimg + 1; 
+0

Das hat es behoben! Vielen Dank. jetzt ist das andere Problem die Verzögerung tritt ein, bevor das erste Bild geladen wird. So sehen wir vor dem ersten Bild eine leere Seite. wie das zu beheben? – user1325414

+0

Sie können das Bild so abholen, wie es [hier] angezeigt wird (http://www.pagesresource.com/jscript/jpreload.htm). Die andere Möglichkeit wäre, eine Javascript-Bibliothek wie jQuery zu verwenden, die über Plug-ins verfügt, mit denen Sie Bild-Sliesshows mit weniger Code/Aufwand erstellen können. –

0

diese ersetzen Versuchen Sie stattdessen:

curimg = (curimg+1) % galleryarray.length; 

Damit können Sie eine Schleife über galleryarray von Anfang an immer wieder zu beenden.

+0

dieser Code funktioniert gut, es gibt nur ein Problem, wenn die Seite zum ersten Mal geladen wird, sehe ich ein leeres Bild, und dann sehen Sie das erste Bild. wie das zu beheben? – user1325414

+0

'setInterval()' wird nicht sofort Ihre 'rotationsimages' Methode ausführen; es wird 2 Sekunden warten, bevor es zum ersten Mal aufgerufen wird. Versuchen Sie, einen Aufruf von 'roteismages' innerhalb Ihres 'window.onload'-Handlers direkt nach Ihrem' setInterval'-Aufruf hinzuzufügen. – cebarrett