複数の画像アップロードするフォームがあります
画像をアップロードした場合にプレビューを表示しますが、
それぞれアップロードしたフォームの横へプレビューを表示したいと思っていますが、
2番めのフォームへアップロードしても1番目のプレビューへ表示されます。
プレビュー表示部分が一番目と二番目で同じなので当たり前なのですが
プレビュー箇所をそれぞれのinputフォーム横に指定するにはどうすればいいのでしょうか?
//ひとつめのアップロードフォーム <div class="form-group"> <label for="file_img_111" class=""> <div class="userProfileImg_description">画像をアップロード</div> <i class="fas fa-camera fa-3x"></i> <input type="file" id="file_img_prize" name="img_111[]"> </label> <div class="userImgPreview" id="userImgPreview"> <img id="thumbnail" class="userImgPreview_content" accept="image/*" src=""> <p class="userImgPreview_text">画像をアップロード済み</p> </div> </div> //ふたつめのアップロードフォーム <div class="form-group"> <label for="file_img_222" class=""> <div class="userProfileImg_description">画像をアップロード</div> <i class="fas fa-camera fa-3x"></i> <input type="file" id="file_img_prize" name="img_222[]"> </label> <div class="userImgPreview" id="userImgPreview"> <img id="thumbnail" class="userImgPreview_content" accept="image/*" src=""> <p class="userImgPreview_text">画像をアップロード済み</p> </div> </div>
<script> $("INPUT[id^='file_']").on("change", function(e) { var file = e.target.files[0]; // 画像ファイル以外は処理停止 if(file.type.indexOf('image') < 0){ alert("画像ファイルを指定してください。"); return false; } console.log(e.target.id + " がクリックされました。"); if (e.target.files.length) { reader = new FileReader(); reader.onload = function (e) { var userThumbnail; userThumbnail = document.getElementById('thumbnail'); $("#userImgPreview").addClass("is-active"); userThumbnail.setAttribute('src', e.target.result); }; return reader.readAsDataURL(e.target.files[0]); } }); </script>
やってみたこと
//js側 div = document.getElementByClassName('file_img_111');//新たにHTML側へclassを追加 userThumbnail = div.getElementById('thumbnail');
//html側 <div class="file_img_111"> <div class="userImgPreview" id="userImgPreview"> <img id="thumbnail" class="userImgPreview_content" accept="image/*" src=""> <p class="userImgPreview_text">画像をアップロード済み</p> </div> </div> <div class="file_img_222"> <div class="userImgPreview" id="userImgPreview"> <img id="thumbnail" class="userImgPreview_content" accept="image/*" src=""> <p class="userImgPreview_text">画像をアップロード済み</p> </div> </div>
よろしくおねがいします