質問編集履歴

2

質問内容の編集

2020/11/10 10:43

投稿

toratail
toratail

スコア12

test CHANGED
@@ -1 +1 @@
1
- JavaScript 画像複数枚投稿 プレビューを表示させたい
1
+ JavaScript 画像複数枚投稿プレビューを表示させたい
test CHANGED
@@ -1,6 +1,6 @@
1
1
  Jsの実装にて、出品昨日投稿ページで
2
2
 
3
- 画像選択した際に、選択した画像をプレビューで表示たい
3
+ 画像選択した際に、選択した画像をプレビューで表示ができま
4
4
 
5
5
 
6
6
 
@@ -155,161 +155,3 @@
155
155
 
156
156
 
157
157
  ご教授よろしくお願いします。
158
-
159
- Jsの実装にて、出品昨日投稿ページで
160
-
161
- 画像選択した際に、選択した画像をプレビューで表示させたい。
162
-
163
-
164
-
165
- Jsコード
166
-
167
- ```
168
-
169
- if (document.URL.match( /new/ ) || document.URL.match( /edit/ )) {
170
-
171
- document.addEventListener('DOMContentLoaded', function() {
172
-
173
- const ImageList = document.getElementById('item-box-img');
174
-
175
-
176
-
177
- // 選択した画像を表示する関数
178
-
179
- const createImageHTML = (blob) => {
180
-
181
- // 画像を表示するためのdiv要素を生成
182
-
183
- const imageElement = document.createElement('div')
184
-
185
- imageElement.setAttribute('class', "image-element")
186
-
187
- let imageElementNum = document.querySelectorAll('.image-element').length
188
-
189
-
190
-
191
-
192
-
193
- // 表示する画像を生成
194
-
195
- const blobImage = document.createElement('img')
196
-
197
- blobImage.setAttribute('src', blob)
198
-
199
-
200
-
201
- // ファイル選択ボタンを生成
202
-
203
- const inputHTML = document.createElement('input')
204
-
205
- inputHTML.setAttribute('id', `item-image${imageElementNum}`)
206
-
207
- inputHTML.setAttribute('name', 'item[images][]')
208
-
209
- inputHTML.setAttribute('type', 'file')
210
-
211
-
212
-
213
- // 生成したHTMLの要素をブラウザに表示させる
214
-
215
- imageElement.appendChild(blobImage)
216
-
217
- imageElement.appendChild(inputHTML)
218
-
219
- ImageList.appendChild(imageElement)
220
-
221
-
222
-
223
- inputHTML.addEventListener('change', (e) => {
224
-
225
- file = e.target.files[0];
226
-
227
- blob = window.URL.createObjectURL(file);
228
-
229
-
230
-
231
- createImageHTML(blob)
232
-
233
-
234
-
235
- })
236
-
237
- }
238
-
239
-
240
-
241
- document.getElementById('message_image_0').addEventListener('change', (e) => {
242
-
243
- let file = e.target.files[0];
244
-
245
- let blob = window.URL.createObjectURL(file);
246
-
247
-
248
-
249
- createImageHTML(blob)
250
-
251
-
252
-
253
- });
254
-
255
- });
256
-
257
- }
258
-
259
- ```
260
-
261
-
262
-
263
- 出品機能HTML
264
-
265
- ```
266
-
267
- <%= form_with(model: @item, local: true) do |f| %>
268
-
269
-
270
-
271
- <%# インスタンスを渡して、エラー発生時にメッセージが表示されるようにしましょう。%>
272
-
273
- <%= render 'shared/error_messages', model: f.object %>
274
-
275
- <%# //インスタンスを渡して、エラー発生時にメッセージが表示されるようにしましょう。%>
276
-
277
-
278
-
279
- <%# 出品画像 %>
280
-
281
- <div class="img-upload">
282
-
283
- <div class="weight-bold-text">
284
-
285
- 出品画像
286
-
287
- <span class="indispensable">必須</span>
288
-
289
- </div>
290
-
291
- <div class="click-upload">
292
-
293
- <p>
294
-
295
- クリックしてファイルをアップロード
296
-
297
- </p>
298
-
299
- <%= f.file_field :images, name: 'item[images][]', id:"item-image" %>
300
-
301
- </div>
302
-
303
- <div id= "item-box-img">
304
-
305
- </div>
306
-
307
- </div>
308
-
309
- <%# /出品画像 %>
310
-
311
- ```
312
-
313
-
314
-
315
- ご教授よろしくお願いします。

1

質問の修正

2020/11/10 10:43

投稿

toratail
toratail

スコア12

test CHANGED
File without changes
test CHANGED
@@ -155,3 +155,161 @@
155
155
 
156
156
 
157
157
  ご教授よろしくお願いします。
158
+
159
+ Jsの実装にて、出品昨日投稿ページで
160
+
161
+ 画像選択した際に、選択した画像をプレビューで表示させたい。
162
+
163
+
164
+
165
+ Jsコード
166
+
167
+ ```
168
+
169
+ if (document.URL.match( /new/ ) || document.URL.match( /edit/ )) {
170
+
171
+ document.addEventListener('DOMContentLoaded', function() {
172
+
173
+ const ImageList = document.getElementById('item-box-img');
174
+
175
+
176
+
177
+ // 選択した画像を表示する関数
178
+
179
+ const createImageHTML = (blob) => {
180
+
181
+ // 画像を表示するためのdiv要素を生成
182
+
183
+ const imageElement = document.createElement('div')
184
+
185
+ imageElement.setAttribute('class', "image-element")
186
+
187
+ let imageElementNum = document.querySelectorAll('.image-element').length
188
+
189
+
190
+
191
+
192
+
193
+ // 表示する画像を生成
194
+
195
+ const blobImage = document.createElement('img')
196
+
197
+ blobImage.setAttribute('src', blob)
198
+
199
+
200
+
201
+ // ファイル選択ボタンを生成
202
+
203
+ const inputHTML = document.createElement('input')
204
+
205
+ inputHTML.setAttribute('id', `item-image${imageElementNum}`)
206
+
207
+ inputHTML.setAttribute('name', 'item[images][]')
208
+
209
+ inputHTML.setAttribute('type', 'file')
210
+
211
+
212
+
213
+ // 生成したHTMLの要素をブラウザに表示させる
214
+
215
+ imageElement.appendChild(blobImage)
216
+
217
+ imageElement.appendChild(inputHTML)
218
+
219
+ ImageList.appendChild(imageElement)
220
+
221
+
222
+
223
+ inputHTML.addEventListener('change', (e) => {
224
+
225
+ file = e.target.files[0];
226
+
227
+ blob = window.URL.createObjectURL(file);
228
+
229
+
230
+
231
+ createImageHTML(blob)
232
+
233
+
234
+
235
+ })
236
+
237
+ }
238
+
239
+
240
+
241
+ document.getElementById('message_image_0').addEventListener('change', (e) => {
242
+
243
+ let file = e.target.files[0];
244
+
245
+ let blob = window.URL.createObjectURL(file);
246
+
247
+
248
+
249
+ createImageHTML(blob)
250
+
251
+
252
+
253
+ });
254
+
255
+ });
256
+
257
+ }
258
+
259
+ ```
260
+
261
+
262
+
263
+ 出品機能HTML
264
+
265
+ ```
266
+
267
+ <%= form_with(model: @item, local: true) do |f| %>
268
+
269
+
270
+
271
+ <%# インスタンスを渡して、エラー発生時にメッセージが表示されるようにしましょう。%>
272
+
273
+ <%= render 'shared/error_messages', model: f.object %>
274
+
275
+ <%# //インスタンスを渡して、エラー発生時にメッセージが表示されるようにしましょう。%>
276
+
277
+
278
+
279
+ <%# 出品画像 %>
280
+
281
+ <div class="img-upload">
282
+
283
+ <div class="weight-bold-text">
284
+
285
+ 出品画像
286
+
287
+ <span class="indispensable">必須</span>
288
+
289
+ </div>
290
+
291
+ <div class="click-upload">
292
+
293
+ <p>
294
+
295
+ クリックしてファイルをアップロード
296
+
297
+ </p>
298
+
299
+ <%= f.file_field :images, name: 'item[images][]', id:"item-image" %>
300
+
301
+ </div>
302
+
303
+ <div id= "item-box-img">
304
+
305
+ </div>
306
+
307
+ </div>
308
+
309
+ <%# /出品画像 %>
310
+
311
+ ```
312
+
313
+
314
+
315
+ ご教授よろしくお願いします。