2012-03-14 8 views
3

私は基本的なフェードインのフェードアウトスライドショーを作りたいと思っています。 ループにする方法は?jQuery - 関数をループする方法は?

HTML

<img src="image1.jpg" class="img1"> 
<img src="image2.jpg" class="img2"> 

JS

$(document).ready(function() { 
function playslider(){ 
     $('.img1').fadeIn(800).delay(800).fadeOut(800); 
     $('.img2').delay(1600).fadeIn(800).delay(800).fadeOut(800); 
} 
playslider(); 
}); 
+0

あなたはそれを一度だけ自動再生したいのですか? – Shaheer

+0

いいえ、私はそれを作ります - > fadeOut(800、playslider)。そして最後のイメージをフェードアウトし、次の最初のイメージをクロスフェードインする方法は? – KnightMax

答えて

7

はこれにそれを変更してみてください:

$(document).ready(function() { 
function playslider(){ 
     $('.img1').fadeIn(800).delay(800).fadeOut(800); 
     $('.img2').delay(1600).fadeIn(800).delay(800).fadeOut(800, playslider); 
                   //^callback function 
} 
playslider(); 
}); 

これは、 "コールバック関数" と呼ばれています。アイデアは、最後のフェードアウトが完了したときに呼び出されるということです。詳細はhereです。

あなたは古き良きJavascriptを使用することができます
+0

ありがとうございます。最後の画像をフェードアウトし、次の最初の画像をフェードインする方法を教えてください。 – KnightMax

+0

クロスフェーディングはあなたの現在の質問の範囲を超えており、コメントで答えるのは難しいでしょう。その特定の問題について新しい質問を作成することをお勧めします。これまで、クロスフェードを処理するためにjQueryプラグインを使用していました。 –

+0

@AbeMiesslerニースone.larned新しいトリックnow ..お気遣い – Gopesh

2

$(document).ready(function() { 
function playslider(){ 
     // code to execute 
    x = setTimeout("playslider()", 5000); //will loop every 5 seconds. 
} 
playslider(); //start it up the first time 

}); 
+0

なぜx = setTimeout( "playslider()"、5000);動作しません?? – KnightMax

2

答えは次のとおりです。

$(document).ready(function() { 
function playslider(){ 
     // code to execute 
    x = setTimeout(function(){playslider()}, 5000); 
} 
playslider(); 

}); 
0

それが良い動作しますが、uはこの方法でそれを変更した場合、それは

$('.img1').fadeIn(800).delay(800).fadeOut(800); 
    $('.img2').delay(2400).fadeIn(800).delay(800).fadeOut(800, playslider); 

良い作品ダレイ時間を2400(2400 = 800 + 800 + 800)に増やす

関連する問題