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

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

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

Google Chromeは携帯、テレビ、デスクトップなどの様々なプラットフォームで利用できるウェブブラウザです。Googleが開発したもので、Blink (レンダリングエンジン) とアプリケーションフレームワークを使用しています。

JavaScript

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

2回答

3582閲覧

javascript inputした画像が表示されない

alice4649

総合スコア17

Chrome

Google Chromeは携帯、テレビ、デスクトップなどの様々なプラットフォームで利用できるウェブブラウザです。Googleが開発したもので、Blink (レンダリングエンジン) とアプリケーションフレームワークを使用しています。

JavaScript

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

1クリップ

投稿2022/01/01 12:52

したいこと

 画像ファイルを選択し、読み込み、その画像を表示すること
(画像ファイル読み込みは一つだけで)

###問題点
画像が表示されない
ちなみにエラーはコンソールでは確認できなかった

コード

html

1<!DOCTYPE html> 2<html lang="en"> 3 4<head> 5 <meta charset="UTF-8"> 6 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 7 <title>New Tab</title> 8 <link rel="stylesheet" href="./index.css"> 9 <script src="./index.js"></script> 10</head> 11 12<body> 13 <!-- コンテンツを記述 --> 14 15<input type="file" id="imgfile" accept=".png,.jpg,.jpeg,.pdf,.gif"> 16<input type="button" value="send me" id="imgbutton" onclick="imgchange()"> 17<div id="imgview"></div> 18 19</body> 20</html>

javascript

1function imgchange(){ 2 var fileinput=document.getElementById('imgfile'); 3 fileinput.addEventListener('change',function(e){ 4 var uploadfileurl=URL.createObjectURL(e.target.files); 5 6 var img_element=document.createElement("img"); 7 img_element.src=uploadfileurl; 8 img_element.alt=e.target.files.name; 9 img_element.width=100; 10 img_element.onload=function(){ 11 URL.revokeObjectURL(this.src) 12 } 13 var div_element=document.getElementsById('imgview'); 14 div_element.appendChild(img_element) 15 }) 16 17}

ご教授願いたいところ

①どこが問題となって画像が表示できていないのか
②どのようにしたら画像を表示できるか
③「javascript」の3,4行目の「e」が何を意味しているのか、何の意味があるのか

参考にしたサイト

https://gray-code.com/javascript/get-url-object-from-file-object/

その他

html,javascript初学者なので至らない点もありますがご了承ください。

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

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

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

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

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

guest

回答2

0

ベストアンサー

問題は二つあります。

  1. e.target.filesは配列でURL.createObjectURL()の一つ目の引数はFileを欲しがっています。

なので URL.createObjectURL(e.target.files[0])で一つ目のファイルを指定すればいいです。

  1. getElementsByIdの書き間違え。sが多いです。正しいのはgetElementByIdです。idは一つしかないので複数形式のelementだとおかしいです。

この二つを直せば上手く拳動しました。

投稿2022/01/01 14:15

skys215

総合スコア910

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

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

alice4649

2022/01/01 17:27

画像が出るようになりました。ありがとうございました。 ですが、少々問題点があったのでもし何故か存じていましたら教えていただきたいです。
alice4649

2022/01/01 17:32

①ファイルを入れて、ボタンを押して送信しても何も起こらず、次に違うファイルを入れると最初ファイルの時に押した回数だけ画像が出る点 ②出る画像は最新のファイルの一枚のみの表示にする方法(できれば)
skys215

2022/01/02 02:31

今のコードだとボタンを押してからフィールドの変動を監視することになってます。つまり、ボタンを押してから、フィールドの変動の気づいて、プレビューを表示する様です。 なのでページがロード完了後すぐにフィールドの変動を監視すれば、ファイルを選択後プレビューを表示することができます。 具体的にはonloadイベントです。 https://developer.mozilla.org/ja/docs/Web/API/Window/load_event
alice4649

2022/01/02 04:19

ボタンを消して、onloadを使用したところプレビュー表示することができました。 ありがとうございます!
guest

0

eはイベントの引数です。
fileinput.addEventListener('change',function(e){<--e

投稿2022/01/01 14:07

skys215

総合スコア910

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問