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

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

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

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

HTML

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

Q&A

解決済

2回答

450閲覧

ボタン入力で画像表示

m.aru8

総合スコア2

JavaScript

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

HTML

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

0グッド

1クリップ

投稿2021/11/12 06:36

ボタン入力でりんごの画像を表示するプログラムを作成しているのですが、
例) 
ボタン1を入力 → りんごが1つ表示
ボタン5を入力 → りんごが5つ表示
imgでりんごを挿入して非表示にして、ボタンが入力された時に表示しています。

html

1 <!--りんご挿入--> 2  <!--1個--> 3 <div id="r1"> 4 <img src="apple1.png"alt="りんご画像"width="40px"></div> 5  <!--5個--> 6 <div id="r5"> 7 <img src="apple1.png"alt="りんご画像"width="40px"> 8 <img src="apple1.png"alt="りんご画像"width="40px"> 9 <img src="apple1.png"alt="りんご画像"width="40px"> 10 <img src="apple1.png"alt="りんご画像"width="40px"> 11 <img src="apple1.png"alt="りんご画像"width="40px"></div> 12 13 <!--ボタン--> 14 <!--ボタン1-->  15 <input type="button" value="- 1 -"onclick="document.getElementById('r1'). 16 style.visibility='visible'";> 17 <!--ボタン1-->  18 <input type="button" value="- 5 -"onclick="document.getElementById('r5'). 19 style.visibility='visible'";> 20

css

1 /*りんご非表示*/ 2 #r1{ 3 visibility: hidden; 4 } 5 #r5{ 6 visibility: hidden; 7 }

ボタン1を入力した後にもう一度ボタン1を入力してもりんごは1つしか表示されません。
**### ボタン1を入力してりんごが1つ表示された後にもう一度ボタン1を押せばもう一つ(計2つ)表示される
プログラム
**が作成したいです。

他に試そうとしたことがあるのですが理解できずに断念しましたが一様書きます。

ボタン1を入力すると非表示にしたりんごを一つ複製して表示させる方法です。
https://liginc.co.jp/458298 こちらのサイトを参考にしたのですが、
任意の数をボタンで表示する方法がわからず断念しました。

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

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

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

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

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

guest

回答2

0

ごくシンプルに書くならこんな感じでしょうか

HTML

1<div id='1' style='display:none'> 2 <img src="apple1.png"alt="りんご画像"width="40px"> 3</div> 4 5<div id='2'></div> 6 7<input type="button" value="- 1 -" onclick='append(1)'> 8<input type="button" value="- 5 -" onclick='append(5)'> 9 10 11<script> 12function append(num){ 13 const obj = document.getElementById('1').getElementsByTagName('img')[0]; 14 for(i = 0; i < num; i++){ 15 document.getElementById('2').appendChild(obj.cloneNode(true)) 16 } 17 18} 19</script>

スタイルの書き方などは微妙ですが

投稿2021/11/12 07:19

q_sane_q

総合スコア610

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

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

0

ベストアンサー

サンプルを作成してみましたので参考にしてください。

html

1<div id="basket"></div> 2 3<template id="image-template"> 4 <img src="https://via.placeholder.com/512/999999/333333/?text=Ringo" style="width: 40px; height: 40px;"> 5</template> 6 7<button id="button1"> 8 - 1 - 9</button> 10 11<button id="button5"> 12 - 5 - 13</button> 14 15<script> 16const basket = document.querySelector("#basket"); 17const imageTemplate = document.querySelector("#image-template"); 18const button1 = document.querySelector("#button1"); 19const button5 = document.querySelector("#button5"); 20 21basket.addEventListener("App.ImageAddRequest", (event) => { 22 const imageCount = event.detail.imageCount ?? 0; 23 24 for (let count = 0; count < imageCount; count++) { 25 const image = imageTemplate.content.cloneNode(true); 26 27 basket.appendChild(image); 28 } 29}); 30 31button1.addEventListener("click", (event) => { 32 basket.dispatchEvent(new CustomEvent("App.ImageAddRequest", { 33 detail: { 34 imageCount: 1, 35 }, 36 })); 37}); 38 39button5.addEventListener("click", (event) => { 40 basket.dispatchEvent(new CustomEvent("App.ImageAddRequest", { 41 detail: { 42 imageCount: 5, 43 }, 44 })); 45}); 46</script>

追記

この処理は2回までとかもできるのでしょうか?
1を押し1個表示され5を押し5個表示され 3回目以降は押しても表示できなくなる感じです。

ボタンを押した回数をどこかに保存しておいて、画像追加処理の部分で判定してください。

html

1<div id="basket" data-image-add-request-count="0"></div> 2 3<template id="image-template"> 4 <img src="https://via.placeholder.com/512/999999/333333/?text=Ringo" style="width: 40px; height: 40px;"> 5</template> 6 7<button id="button1"> 8 - 1 - 9</button> 10 11<button id="button5"> 12 - 5 - 13</button> 14 15<script> 16const basket = document.querySelector("#basket"); 17const imageTemplate = document.querySelector("#image-template"); 18const button1 = document.querySelector("#button1"); 19const button5 = document.querySelector("#button5"); 20 21const maxImageAddRequestCount = 2; 22 23basket.addEventListener("App.ImageAddRequest", (event) => { 24 const imageAddRequestCount = Number.parseInt(basket.dataset.imageAddRequestCount); 25 26 if (imageAddRequestCount >= maxImageAddRequestCount) { 27 return; 28 } 29 30 const imageCount = event.detail.imageCount ?? 0; 31 32 for (let count = 0; count < imageCount; count++) { 33 const image = imageTemplate.content.cloneNode(true); 34 35 basket.appendChild(image); 36 } 37 38 basket.dataset.imageAddRequestCount = imageAddRequestCount + 1; 39}); 40 41button1.addEventListener("click", (event) => { 42 basket.dispatchEvent(new CustomEvent("App.ImageAddRequest", { 43 detail: { 44 imageCount: 1, 45 }, 46 })); 47}); 48 49button5.addEventListener("click", (event) => { 50 basket.dispatchEvent(new CustomEvent("App.ImageAddRequest", { 51 detail: { 52 imageCount: 5, 53 }, 54 })); 55}); 56</script>

投稿2021/11/12 06:59

編集2021/11/15 05:04
KAOsaka

総合スコア531

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

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

m.aru8

2021/11/15 02:02

思っていた通りの処理になりました。有難う御座います。ちなみにこの処理は2回までとかもできるのでしょうか? 1を押し1個表示され5を押し5個表示され 3回目以降は押しても表示できなくなる感じです。
KAOsaka

2021/11/15 05:05

追記しました。追加の質問についてはご自分である程度試行錯誤していただいた後に、新しく質問を立ち上げるのが良いと思われます。
m.aru8

2021/11/15 06:13

承知しました、今回は本当に助かりました。 有難う御座いました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問