- ベストアンサー
jqueryでの画像表示について
- 画像のプリロードをするためjqueryを書いていますが、上手くいきません
- ループしてくれず、i++が効いていないようです
- 一枚ずつ表示し、非表示の最初のliにフェイドインさせる方法を教えてください
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
#2です。 >returnを使用する意味はあるのでしょうか returnをはずしてみればわかるかと思います。 全体としてはsetTimeouteを利用してループ内でまとめて処理をセットしている形になっています。 (そのときにはまだ実際のfade処理は行なわれていません。) 通常のsetTimeoutは、 setTimeout( fucntion, interval) といった使われ方をしますが、function部分は引数がない場合は、function名のみを指定することですみます。 今回の例では変数「i」の値を利用したいのですが、 setTimeout(doFade(i), interval * i); とすると、この文を実行するタイミングで、doFade(i)が評価されてしまいます。 これを避ける意味で setTimeout( function(){ doFade(i) }, interval * i); とすれば、function(){}内は、指定した時間後に実行されるようになりますが、今度は、そのタイミングで変数「i」の値が評価されるために、思った(予定した)処理と違うことが起こります。 ということで、回答のような記述方法を取っています。(他の方法も考えられると思いますが) 記述方法についての詳細は、このあたりをご参考に… http://www.atmarkit.co.jp/fdotnet/ajaxjs/ajaxjs03/ajaxjs03_04.html
その他の回答 (2)
- fujillin
- ベストアンサー率61% (1594/2576)
ほとんど同じ質問に回答したばかりのような気が… http://okwave.jp/qa/q7600845.html
お礼
すみませんありがとうございます。 あと一点質問がございます。 回答に書かれていた $(function(){ $('.fade li').hide(); }); $(window).bind("load", function(){ var interval = 300; //表示間隔 for(var i=0; i<$('.fade li').length; i++) setTimeout(doFade(i), interval * i); function doFade(i){ return function(){ $('.fade li').eq(i).fadeIn(1000); }; } 最後のreturnの部分なのですが、returnを使用する意味はあるのでしょうか。またどこに返っているのでしょうか。 実際returnについてよくわからない部分があり、ずっと調べてはいるものの、なかなかうまく把握できないものでご教示いただければ幸いです。 宜しくお願い致します。
- askaaska
- ベストアンサー率35% (1455/4149)
var c = setInterval(showImg() , 500); を c = setInterval(showImg , 500); にしてみるとかどお?
お礼
ありがとうございます。原因はそこではなかったものの、確かに間違いでした。
お礼
わかりました!! ご親切にどうもありがとうございました!!