サンプルを作成してみましたので参考にしてください。
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>
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。