2012-04-11 10 views
0

私はこのコードを使ってtest.php出力から配列を読み込み、それをソートして、スライドショーのような結果を表示します。JavaScript show images by one

画像の1つのみが表示されるため、この行には何か問題があります。ここ

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

はコードです:私のコードで間違って

> <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> 
> 

いただきましたか!?

もう1つの問題は、初めてページを読み込むときに、2000ミリ秒間の空白ページが表示されることです。 //または上記で設定した値。

画像が読み込まれる前に遅延が発生しているか、何らかの理由でカウントが間違っています。それを修正する方法は?

これは私のPHPコードから出力された:

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";​ 

答えて

0
ラインで

curimg= (curimg < galleryarray.length); 

あなたはブール値(1または0)にcurimgを設定しています。

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

これを繰り返して最初から最後までgalleryarray上であなたにループをできるようになる:何をする必要がある代わりにこれを試してみてください

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

それを修正しました!ありがとうございました。もう1つの問題は、最初の画像が読み込まれる前の遅延です。最初の画像の前に空白のページが表示されます。それを修正する方法は? – user1325414

+0

[ここ](http://www.pageresource.com/jscript/jpreload.htm)のように画像をプリフェッチできます。もう一つの選択肢は、jQueryのようなjavascriptライブラリを使うことです。プラグインを使うと、少ないコード/労力で画像を見ることができます。 –

0

として行を置き換えるです。

+0

そのコードはうまくいきます。ページが初めて読み込まれたときに空白の画像が表示され、最初の画像が表示されるときに問題が1つあります。それを修正する方法は? – user1325414

+0

'setInterval()'はすぐに 'rotateimages'メソッドを実行しません。それは最初にそれを呼び出す前に2秒待つでしょう。あなたの 'setInterval'呼び出しの直後に、あなたの' window.onload'ハンドラの中で 'rotateimages'への呼び出しを追加してみてください。 – cebarrett