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

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

新規登録して質問してみよう
ただいま回答率
85.48%
オブジェクト

オブジェクト指向において、データとメソッドの集合をオブジェクト(Object)と呼びます。

JavaScript

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

1回答

3514閲覧

JavaScript 配列の中に画像を挿入したい

退会済みユーザー

退会済みユーザー

総合スコア0

オブジェクト

オブジェクト指向において、データとメソッドの集合をオブジェクト(Object)と呼びます。

JavaScript

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2020/05/31 06:28

実現したいこと、試したこと

ボタンを押して画像をモーダル表示、それを配列にしたいのですが書き方がわかりません。
現在クイズを作っていて、ヒントとして画像を用意しようと思っています。

quizSetオブジェクトにプロパティを作ってイメージを挿入しようとしましたが、うまくできませんでした。

該当のソースコード

JavaScript

1 2"use strict"; 3 4{ 5 const question = document.getElementById("question"); 6 const choices = document.getElementById("choices"); 7 const btn = document.getElementById("btn"); 8 const result = document.getElementById("result"); 9 const scoreLabel = document.querySelector("#result > p"); 10 const supplement = document.getElementById("supplement"); 11 const answer = document.getElementById("answer"); 12 const a = document.getElementById("a"); 13 const p = document.getElementById("p"); 14 const open = document.getElementById("open"); 15 const close = document.getElementById("close"); 16 const modal = document.getElementById("modal"); 17 const mask = document.getElementById("mask"); 18 19 const quizSet = [ 20 { 21 q: "問題1", 22 c: ["選択肢1", "選択肢2", "選択肢3", "選択肢4"], 23 a: "答え:選択肢1", 24 p:"解説", 25 h:"", 26 }, 27 { 28 q: "問題2", 29 c: ["選択肢1", "選択肢2", "選択肢3", "選択肢4"], 30 a: "答え:選択肢1", 31 p:"解説", 32 h:"", 33 }, 34 ]; 35 36 open.title = "ヒント"; 37 38 39 40 open.addEventListener("click", () => { 41 modal.classList.remove("hidden3"); 42 mask.classList.remove("hidden3"); 43 }); 44 close.addEventListener("click", () => { 45 modal.classList.add("hidden3"); 46 mask.classList.add("hidden3"); 47 }); 48 mask.addEventListener("click", () => { 49 close.click(); 50 }); 51 52 53 54 55 let currentNum = 0; 56 let hintCurrentNum = 0; 57 let isAnswered; 58 let score = 0; 59 60 61 62 function shuffle(arr) { 63 //シャッフル関数 64 for (let i = arr.length - 1; i > 0; i--) { 65 const j = Math.floor(Math.random() * (i + 1)); 66 [arr[j], arr[i]] = [arr[i], arr[j]]; 67 } 68 return arr; 69 } 70 71 72 73 function checkAnswer(li) { 74 //操作の細部設定。正誤判定の表示。 75 a.textContent = quizSet[currentNum].a; 76 p.textContent = quizSet[currentNum].p; 77 supplement.classList.remove("hidden2"); 78 if (isAnswered === true) { 79 //他を押せなくする 80 return; 81 } 82 isAnswered = true; 83 if (li.textContent === quizSet[currentNum].c[0]) { 84 85 li.classList.add("correct"); 86 score++; 87 } else { 88 li.classList.add("wrong"); 89 } 90 btn.classList.remove("disabled"); 91 } 92 93 94 95 96 function setQuiz() { 97 //関数でまとめる 98 isAnswered = false; 99 question.textContent = quizSet[currentNum].q; 100 101 while (choices.firstChild) { 102 choices.removeChild(choices.firstChild); 103 } 104 105 106 107 const shuffledChoices = shuffle([...quizSet[currentNum].c]); //シャッフルしてから表示 108 109 shuffledChoices.forEach((choice) => { 110 const li = document.createElement("li"); //HTMLへの埋め込み 111 li.textContent = choice; 112 li.addEventListener("click", () => { 113 114 checkAnswer(li); 115 }); 116 choices.appendChild(li); 117 }); 118 119 if (currentNum === quizSet.length - 1) { 120 btn.textContent = "スコア"; 121 } 122 } 123 124 125 126 127 setQuiz(); 128 129 btn.addEventListener("click", () => { 130 if (btn.classList.contains("disabled")) { 131 return; 132 } 133 btn.classList.add("disabled"); 134 supplement.classList.add("hidden2"); 135 if (currentNum === quizSet.length - 1) { 136 scoreLabel.textContent = `Score: ${score} / ${quizSet.length}`; 137 result.classList.remove("hidden"); 138 } else { 139 currentNum++; 140 setQuiz(); 141 } 142 }); 143} 144

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

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

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

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

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

guest

回答1

0

ベストアンサー

JavaScript で HTMLに画像を出力する目的で画像を変数に入れるなら、画像のURLをテキストで持っておいて、使用するときにimg要素のsrc属性に入れればよいです。img要素のDOMオブジェクト自体を変数に入れることもできますが、URLのほうが簡単な気がします。

投稿2020/05/31 06:40

kei344

総合スコア69398

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

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

退会済みユーザー

退会済みユーザー

2020/05/31 07:05

JavaScriptの方にはどのように記述すればいいのでしょうか?
kei344

2020/05/31 07:06

何をですか?
退会済みユーザー

退会済みユーザー

2020/05/31 07:16

どのように記述すればURLをimg要素のsrc属性に入れられますか?
退会済みユーザー

退会済みユーザー

2020/05/31 07:59

できました!!ありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問