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

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

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

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

JavaScript

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

HTML

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

Q&A

0回答

595閲覧

JavaScriptで画像複数枚実装

lalalaola

総合スコア0

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

JavaScript

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

HTML

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

0グッド

0クリップ

投稿2021/03/25 21:50

編集2021/03/26 09:44

前提・実現したいこと

初めての投稿です。
JavaScriptでの実装で画像レビューと画像複数枚保存できるようにしたいです。

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

Uncaught TypeError: Cannot read property 'appendChild' of null

該当のソースコード

javaScript if (document.URL.match( /new/ ) || document.URL.match( /edit/ )) { document.addEventListener('DOMContentLoaded', function() { const ImageList = document.getElementById('item-box-img'); // 選択した画像を表示する関数 const createImageHTML = (blob) => { // 画像を表示するためのdiv要素を生成 const imageElement = document.createElement('div') imageElement.setAttribute('class', "image-element") let imageElementNum = document.querySelectorAll('.image-element').length // 表示する画像を生成 const blobImage = document.createElement('img') blobImage.setAttribute('src', blob) // ファイル選択ボタンを生成 const inputHTML = document.createElement('input') inputHTML.setAttribute('id', `item_image${imageElementNum}`) inputHTML.setAttribute('name', 'item[images][]') inputHTML.setAttribute('type', 'file') // 生成したHTMLの要素をブラウザに表示させる imageElement.appendChild(blobImage) imageElement.appendChild(inputHTML) ImageList.appendChild(imageElement) inputHTML.addEventListener('change', (e) => { file = e.target.files[0]; blob = window.URL.createObjectURL(file); createImageHTML(blob) }) } document.getElementById('item-image').addEventListener('change', (e) => { let file = e.target.files[0]; let blob = window.URL.createObjectURL(file); createImageHTML(blob) }); }); }

該当のソースコード

class ItemsController < ApplicationController before_action :authenticate_user!, except: [:index, :show] before_action :set_item, only: [:show, :edit, :update, :destroy] def index @items = Item.all end def new @item = Item.new end def create @item = Item.new(item_params) if @item.valid? @item.save redirect_to root_path else render :new end end def show end def edit end def update if @item.update(item_params) redirect_to item_path else render :edit end end def destroy if @item.destroy redirect_to root_path end end private def item_params params.require(:item).permit(:name, :info, :category_id, :sales_status_id, :shipping_fee_status_id, :prefecture_id, :scheduled_delivery_id, :price, images: [:image]).merge(user_id: current_user.id) end def set_item @item = Item.find(params[:id]) end end

該当のソースコード

<div class="items-sell-contents"> <header class="items-sell-header"> <%= link_to image_tag('furima-logo-color.png' , size: '185x50'), "/" %> </header> <div class="items-sell-main"> <h2 class="items-sell-title">商品の情報を入力</h2> <%= form_with model: @item, local: true do |f| %> <%# インスタンスを渡して、エラー発生時にメッセージが表示されるようにしましょう。%> <%= render 'devise/shared/error_messages', model: f.object %> <%# //インスタンスを渡して、エラー発生時にメッセージが表示されるようにしましょう。%> <%# 出品画像 %> <div class="img-upload"> <div class="weight-bold-text"> 出品画像 <span class="indispensable">必須</span> </div> <div class="click-upload"> <p> クリックしてファイルをアップロード </p> <%= f.file_field :images, name: 'item[images][]', id:"item-image" %> </div> </div>

該当のソースコード

<%= render "devise/shared/header" %> <%# 商品の概要 %> <div class="item-show"> <div class="item-box"> <h2 class="name"> <%= @item.name %> </h2> <div class="item-img-content"> <%= image_tag @item.images, class: "item-box-img" %> <%# 商品が売れている場合は、sold outを表示しましょう %> <% if @item.order.present? %> <div class="sold-out"> <span>Sold Out!!</span> </div> <% end %> <%# //商品が売れている場合は、sold outを表示しましょう %> </div> <div class="item-price-box"> <span class="item-price"> ¥ <%= @item.price %> </span> <span class="item-postage"> <%= @item.shipping_fee_status.name %> </span> </div>

試したこと

タイプミスの確認やgetElementByIdの取得が間違ってないか確認。
色々調べてみたのですが、何が原因なのか全く分からず・・・
申し訳ございませんが、解決策を教えていただけるの助かります。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

K_3578

2021/03/26 00:39

タグ「Java」ではなく「JavaScript」です。両者は全く違う物なので覚えましょう。
Lhankor_Mhy

2021/03/26 01:14

#item-box-img の部分のコードもご提示ください。
Lhankor_Mhy

2021/03/26 09:44 編集

質問の編集を拝読。 Ruby は全くの門外漢なので的外れかもしれませんが、class: "item-box-img" というのは、クラスであって、IDにならないのではないですか? 「getElementByIdの取得が間違ってないか確認」とありますが、もう一度確認してみてはどうでしょうか。
lalalaola

2021/03/26 09:46

メッセージありがとうございます! 確かにそうですね・・・確認がしっかり出来てなかったです・・・。 試してみます! ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問