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

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

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

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

jQuery

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

Q&A

解決済

1回答

1727閲覧

要素が見つからないのかattrが効かない

pecchan

総合スコア592

JavaScript

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

jQuery

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

0グッド

0クリップ

投稿2021/01/17 13:08

jQuery初心者です。

前提・実現したいこと

jQueryにて画像のプレビューを行いたい

発生している問題・エラーメッセージ

attrを使ったがsrc属性が追加されない

html

1<img class="prev" src="xxxxxxxxxxxxxxxxxxxxx">

という出力結果で欲しいのが、

html

1<img class="prev">

となってしまう。

該当のソースコード

html

1<label class="upload-img"> 2 <div class="upload-img__inner"> 3 <input class="upload-img__inner__input" accept="image/png,image/jpeg" multiple="multiple" type="file" style="display: none;"> 4 <svg width="24" height="24" fill="#222222" fill-rule="evenodd" viewBox="0 0 24 24" aria-hidden="true" > 5 <path d="M19.3,5H16.73l-.8-1.61A.7.7,0,0,0,15.3,3H8.7a.7.7,0,0,0-.63.39L7.27,5H4.7A2.7,2.7,0,0,0,2,7.7V18.3A2.7,2.7,0,0,0,4.7,21H19.3A2.7,2.7,0,0,0,22,18.3V7.7A2.7,2.7,0,0,0,19.3,5ZM12,17.3A4.3,4.3,0,1,1,16.3,13,4.31,4.31,0,0,1,12,17.3Z"></path> 6 </svg> 7 <p class="">ドラッグアンドドロップ<br>またはクリックしてファイルをアップロード</p> 8 </div> 9 </label> 10

javascript

1$(document).on('click', '.upload-img', function() { 2 $('.upload-img').off('click'); 3 //alert("click"); 4 $('.upload-img__inner__input').off('change'); 5 $('.upload-img__inner__input').on('change', function (e) { 6 c = $('.upload-img__inner__input').val().length; 7 if(c==0){ 8 return; 9 } 10 let list_item = `<li class="horizontal-img-list__item"> 11 <img class="prev"> 12 </li>` 13 14 let reader = new FileReader(); 15 reader.readAsDataURL(e.target.files[0]); 16 reader.onload = function(e){ 17 //↓ここ srcが追加されない 18 $(list_item).find('.prev').attr('src', e.target.result); 19 } 20 $('.upload-img').prev().append(list_item); 21 }) 22}); 23

jsの、この行で要素が特定できていないのかと思うのですが、その確かめ方が分からず。

javascript

1$(list_item).find('.prev').attr('src', e.target.result);

先輩方教えて下さい。
宜しくお願い致します。

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

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

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

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

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

guest

回答1

0

ベストアンサー

これでどうですか。
単純にjqueryのオブジェクトとして処理されていないだけなんじゃないかなと思います。

javascript

1$(document).on('click', '.upload-img', function() { 2 $('.upload-img').off('click'); 3 //alert("click"); 4 $('.upload-img__inner__input').off('change'); 5 $('.upload-img__inner__input').on('change', function (e) { 6 c = $('.upload-img__inner__input').val().length; 7 if(c==0){ 8 return; 9 } 10 11 // ここではあくまで文字列として変数に入れている 12 let list_item_text = `<li class="horizontal-img-list__item"> 13 <img class="prev"> 14 </li>`; 15 16 // jqueryのObjectとして変換したものを格納する 17 let list_item = $(list_item_text); 18 19 let reader = new FileReader(); 20 reader.readAsDataURL(e.target.files[0]); 21 reader.onload = function(e){ 22 //↓ここ srcが追加されない 23 $(list_item).find('.prev').attr('src', e.target.result); 24 } 25 $('.upload-img').prev().append(list_item); 26 }) 27}); 28

イメージ説明

投稿2021/01/17 15:16

編集2021/01/17 15:19
eneko0513

総合スコア349

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

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

pecchan

2021/01/17 22:29

有難う御座います。 オブジェクトと文字列って扱い方が異なるんですね! 知りませんでした。勉強になりました。 有難う御座います!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問