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

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

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

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

jQuery

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

Q&A

解決済

2回答

1379閲覧

setIntervalの処理完了後の条件分岐について

kitikiti

総合スコア17

JavaScript

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

jQuery

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

1グッド

0クリップ

投稿2020/03/13 04:57

ローディング画面を作成中ですが、画像の読み込みが100になったら処理をしたいのですが、上手くなりません。
javascript得意な方見ていただけませんでしょうか?

jQuery

1 $(function(){ 2 var progress = 0; 3 var imgCount = $('img').length; 4 $("img").each(function(){ 5 var src = $(this).attr('src'); 6 $("<img>").attr('src',src).on('load',function(){ 7 progress++; 8 }); 9 }); 10 setInterval(function(){ 11 $("#progress-bar").css({ 12 'width': (progress / imgCount) * 100 + '%' 13 }); 14 if (progress >= 100) { 15 $('#progress-bar').addClass('test') 16 } else { 17 18 } 19 }, 1); 20 });
s.k👍を押しています

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

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

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

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

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

kei344

2020/03/13 04:59

「うまくできない」とは「何をしたときに」「どうなると思って」「どうなったのか」を、出ているエラーなどと併せて、具体的に記述されたほうが回答を得られやすいと思います。
guest

回答2

0

ベストアンサー

ぱっと見なので間違ってるかもしれません。

jQuery

1 2$(function(){ 3 var progress = 0; 4 var imgCount = $('img').length; 5 $("img").each(function(){ 6 var src = $(this).attr('src'); 7 $("<img>").attr('src',src).on('load',function(){ 8 progress++; 9 }); 10 }); 11 setInterval(function(){ 12 $("#progress-bar").css({ 13 'width': (progress / imgCount) * 100 + '%' 14 }); 15 if ((progress / imgCount) * 100 >= 100) { 16 $('#progress-bar').addClass('test') 17 } else { 18 19 } 20 }, 1); 21 }); 22

if(progress>=100)のところですが、100 => 100%を表してるものだと思います。
しかしながらprogress自体には何%であるという情報は入っていないことはお分かり頂けると思います。

投稿2020/03/13 05:25

編集2020/03/13 05:29
kyoya0819

総合スコア10429

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

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

0

ローディング に関して、別の考え方
(ご質問タイトルにある setInterval() を使わない方法です)

URL一覧から動的にHTMLImageElement を作成し、文書木に配備する

javascript

1let images = [ 2 /* imageURL */ 3]; 4 5let loadedCount = 0; 6let checkComplete = () => { 7 ++loadedCount; 8 9 // プログレスバー更新 10 console.log("progress : ", (loadedCount / images.length)*100, "%" ); 11 12 if( loadedCount === images.length ) { 13 // 全て読み込んだ 14 console.log( 'loadedAll' ); 15 } 16} 17 18// url 一覧から画像を実際に読む。head に書く場合は DOMContentLoaded で 19images.forEach( url => { 20 21 let img = Object.assign(new Image(),{ 22 src:url, 23 onload(event){ 24 25 // 文書木に配備する場合のタイミング #2 26 checkComplete(); 27 } 28 }); 29 // 文書木に配備する場合のタイミング #1 30}); 31

文書木(body以下)に配備する場合のタイミング

  1. サーバーへ要求時に配備
  2. サーバーから応答後に配備

$(img)HTMLImageElement を引数に渡したjQueryオブジェクト)の append系APIで配備。


setInterval() は不要になった段階で clearInterval() も考えたほうがいいです。

投稿2020/03/13 06:33

AkitoshiManabe

総合スコア5432

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問