質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

2回答

3240閲覧

jQueryで要素を順番に表示させたい

yokoyama_takuzo

総合スコア19

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

1クリップ

投稿2019/03/07 07:43

編集2019/03/08 06:24

現在トップに画像をバラバラに表示させて全ての表示が終わったらfadeOutするようにしているのですが、
fadeOutの処理が終わった後にまた別の要素(.クラス名)を順番に表示させる方法が分かる方はいらっしゃいますでしょうか?

今回は.topがfadeOutした後に.contentsをfadeInさせるといったような事が出来るといいのですが。

そして次は.contentsがfadeOutしたあとにまた新たな要素を表示させるという風に出来れば一番ありがたいです。

HTML

1 2<div class="top"> 3 <li><img src="1.jpg"></li> 4 <li><img src="2.jpg"></li> 5 <li><img src="3.jpg"></li> 6</div> 7 8 9<div class="contents"></div> 10 11<div class="contents2"></div> 12

jQuery

1 2var element = $('.top li img'); 3element.css({'opacity': '0'}); 4 5$(window).on('load', function() { 6 7 randomShow(); 8 function randomShow() { 9 10 var elmLength = element.length, 11 randSet = Math.floor(Math.random() * elmLength); 12 13 $(element[randSet]).animate({'opacity': '1'}, 1400); 14 element.splice(randSet, 1); 15 16 if ( elmLength > 0 ) { 17 setTimeout(function() {randomShow();}, 400); 18 19 $(this).fadeOut(2000); 20 21 } else { 22 23 setTimeout(function() { 24 $('.top').fadeOut(2000); 25 }, 1000); 26 } 27} 28}); 29 30.contentsに関してはどこに書けばいいのかが分からなかった為、まだ書いていません。 31

3/8追記:ご回答いただいた方々へ。大変感謝しております。
まだ解決には至ってはいないのですが、今の自分のJavaScriptの理解度だとまだ何も出来ないしせっかくいただいたコードを読む事も出来ないと感じました。
これからもっと勉強をして再度質問が出来たらと思います。

本当にありがとうございます。お手数をおかけして大変申し訳ございませんでした。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Lhankor_Mhy

2019/03/07 10:22

ご提示のコードの中に .contents が見当たりませんでしたので、ご明示ください。 変数の中に入っているのでしょうか?
yokoyama_takuzo

2019/03/08 06:03

すみません。.contentsはまだJavaScriptの中には書いていませんでした。続きをどこに書けばいいのかも分からなかったもので、単純に<div class="contents"></div>を.topがfadeOutした後に表示させるだけでいいのですが。
guest

回答2

0

アニメ系のメソッドはアニメーション完了時のコールバックを設定できるため、そこで次のアニメを書いてみてはどうでしょうか?
コールバックの this に完了した要素が設定されています。

jQuery

1function complete() { 2 console.log(this); 3} 4 5$('.top').fadeOut(2000, complete);

https://api.jquery.com/fadeOut/

投稿2019/03/07 13:34

x_x

総合スコア13749

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yokoyama_takuzo

2019/03/08 06:09

回答ありがとうございます!実は私自身JavaScriptの勉強をし始めたばかりでまだ何も分からない状態で質問をしてしまい大変申し訳ないです。昨日インターネットでコールバックについても見てみたのですが自分ではなかなか理解が出来ずで。一度こちらの方法もまた勉強をしてみて試してみたいと思います。どうもありがとうございました!感謝しています!
guest

0

javascript

1<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script><script> 2$(function(){ 3 var element = $('.top li img'); 4 element.hide(); 5 var imgs=[]; 6 var wait=500; 7 setInterval(function(){ 8 if(!element.is(':not(:visible)')){ 9 element.fadeOut(); 10 }else{ 11 if(imgs.length==0){ 12 imgs=element.map(function(x){ 13 return {id:x,sort:Math.random()}; 14 }).get().sort(function(x,y){ 15 return x.sort-y.sort; 16 }).map(function(x){ 17 return x.id; 18 }); 19 }; 20 element.eq(imgs.shift()).fadeIn(); 21 } 22 },wait); 23 24}); 25</script> 26<div class="top"> 27<ul> 28<li><img alt="img1"></li> 29<li><img alt="img2"></li> 30<li><img alt="img3"></li> 31<li><img alt="img4"></li> 32<li><img alt="img5"></li> 33<li><img alt="img6"></li> 34</ul> 35</div>

投稿2019/03/07 09:42

編集2019/03/07 10:33
yambejp

総合スコア114784

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yokoyama_takuzo

2019/03/07 10:10

回答ありがとうございます!一応上記の方法を試してはみたのですがやはり.topの処理をしている間に.contentsがもう既に動いているみたいです。私の説明が非常に悪かったため、再度質問の修正をしました。ありがとうございます。
yambejp

2019/03/07 10:35

> .topの処理をしている間に.contentsがもう既に動いているみたい そんなことはないですけどね 上記をコピペして、waitを2000とかにして実行してみてください fadeOutしたあと一呼吸おいてfadeInが始まってます
yokoyama_takuzo

2019/03/08 06:01

yambejp様がおっしゃっている意味がやっと分かりました。.topが消えて現れてとループされていますね。 これを例えばループではなく.topの表示が終わったあとに別の要素を表示する(例えば自分で新たに作ったアニメーションの<div class=".contents"></div>)を表示したい場合は、element.eq(imgs.shift()).fadeIn();の部分を変えればいいのでしょうか?JavaScriptを勉強し始めたばかりで何も出来なくて本当に質問をする事が申し訳ないです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問