1

jQueryを使用してスライドショーを実装しようとしています.SlideShowというボタンがあり、クリックするとスライドショーがトリガーされます. 一連のサムネイルを表示します。

<div class="pics">
 <img u="bob" id="pic1" src="/photos/thumbs/file1.jpg" class="apt" f="file1.jpg">
 <img u="rob" id="pic2" src="/photos/thumbs/file2.jpg" class="apt" f="file2.jpg">
 <img u="job" id="pic3" src="/photos/thumbs/file3.jpg" class="apt" f="file3.jpg">
 <img u="tom" id="pic4" src="/photos/thumbs/file4.jpg" class="apt" f="file4.jpg">
 <img u="scott" id="pic5" src="/photos/thumbs/file5.jpg" class="apt" f="file5.jpg">
</div>

親指にはクラス「apt」があり、すべての親指のセットを取得できることがわかります。クリック イベント ハンドラーは、setInterval(f, 5000) を使用してループ内で関数を呼び出すだけで済みます。このようにして、5 秒ごとに 1 つの親指の情報を読み取り、サーバーから完全な画像を読み込みます。

しかし、どうやっても未定義になります。コードは次のとおりです。

   var idx='';
   function SlideShow() {
     idx = 1;   //global variable to track index of current thumb inside <div>
     setInterval("GetFullImage()",5000);
   }

   function GetFullImage(){
     var i = $('.apt:nth-child(' + idx + ')').attr("id"); 
     var u = $('.apt:nth-child(' + idx + ')').attr("u"); 
     var f = $('.apt:nth-child(' + idx + ')').attr("f");
     alert('i:=' + i + ' u:' + u + ' f:' + f); <-- always say i, u, f undefined after first time
     idx++;        
   }

なにが問題ですか?私は setInterval() 呼び出しであまり遊んでいません。

4

2 に答える 2

1

あなたは兄弟ではなくn番目の子供を参照しています。画像はすべてお互いの兄弟であり、隣に存在するものではありません。レベルを上げてから、nth-child を使用します。または単につかむ:

$('.pics').children('img').length

しきい値として、次に使用します。

$('.pics img:eq('+idx+')')

このようにして、制限に達するまで idx を上げ続けてから、カウンターをリセットします。

于 2010-11-11T16:13:06.970 に答える
0

これを試してください。つまり、"GetFullImage()" からスピーチ マークとブラケットを削除します。

setInterval(GetFullImage,5000);
于 2010-11-11T16:12:18.787 に答える