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

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

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

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

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

Q&A

解決済

1回答

319閲覧

JavaScript 進捗バー

hachii

総合スコア12

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

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

0グッド

0クリップ

投稿2018/01/08 11:23

編集2018/01/08 12:39

###実現したいこと
ファイルの読み込み状況に合わせて進捗バーを動作させる.
###該当のソースコード

HTML

1<form name="test"> 2<input type="file" id="targetfile"><br> 3<textarea name="txt" rows="10" cols="50" readonly></textarea><br> 4<br><progress value = "0" max = "100" id = "progress1"></progress> 5</form>

JavaScript

1var prg = document.getElementById("progress1"); 2var str = document.getElementById("targetfile"); 3str.addEventListener("change",function(evt){ //ダイアログでファイルが選択された時 4 var file = evt.target.files; 5 var reader = new FileReader();//FileReaderの作成 6 reader.readAsText(file[0]); //テキスト形式で読み込む 7 8 //読込終了後の処理 9 reader.onload = function(ev){ 10 document.test.txt.value = reader.result;//テキストエリアに表示する 11 prg.value = 100; 12 } 13},false);

###起こっている問題
短いファイルならこれでもままでも読み込み状況にあっているように見えるが,長いファイルになるとテキストエリアに書き出される前に100%になってしまう.

###言語・動作環境
GoogleChromeバージョン: 63.0.3239.132(Official Build) (64 ビット)
JavaScript

調べてみましたがこれといった方法が見つからず質問させていただきました.
以上,不明点等ありましたら追記しますのでよろしくお願いいたします.

###訂正後コード追記(2018/01/08 21:37)

Javascript

1 reader.onprogress = evt => { 2 console.log(reader.result); 3 console.log(`${(evt.loaded / evt.total) * 100 | 0}%`); 4 };

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

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

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

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

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

guest

回答1

0

ベストアンサー

onloadはロード完了時のイベントです。onprgressイベントで進捗を見れると思います。

js

1reader.onprogress = evt => { 2 console.log(`${(evt.loaded / evt.total) * 100 | 0}%`); 3};

投稿2018/01/08 11:42

turbgraphics200

総合スコア4267

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

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

hachii

2018/01/08 12:27

回答誠にありがとうございます.いただいたサンプルコードを試したのですが,consoleにログが表示されず,確認できませんでした.エラーは出ていないのですが,原因分かりますでしょうか. また,こちらはjQueryでしょうか? 質問が多くて申し訳ございませんが,よろしくお願いいたします.
hachii

2018/01/08 12:30

申し訳ございません.onload処理の消し忘れでした.動作の方確認取れました.希望通り動きました!二つ目の質問だけ答えていただければ大丈夫です.申し訳ございませんがお願いします.
hachii

2018/01/09 00:53

初めて聞きました。ありがとうございます。サンプルコードのほう、コンソールログでは確認取れたのですが進捗バーに値を入れようとするとエラーが出ました。引き続きかんがえてみますが、何か分かりましたら教えていただけますでしょうか。よろしくお願いいたします。
hachii

2018/01/09 11:34

いただいたコードをいじっているうちにまた疑問が出てきたため,こちらの質問はクローズし,また質問を立てたいと思います.ありがとうございました.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問