前提・実現したいこと
ボタンを押すたびにアコーディオンを増やすことを実装しようとしています。そのため他の要素と差別化するために、テンプレートリテラルを使って、要素に連番を付けたいと思っています。
発生している問題・エラーメッセージ
addAccordion関数を使って、アコーディオンをメインのhtmlに結合させているのですが、console.log(accordionCount)実行すると、数が1ずつ増加しているのですが、肝心の追加したhtml要素は連番ではなく、初期値の1が入ってしまいます。なぜ、htmlにしっかりと連番が反映されないのでしょうか?
jsはwebpackでコンパイルして読み込ませています。
該当のソースコード
javascript
1'use strict'; 2 3let accordionCount = 1; 4const list = document.getElementById('list'); 5console.log(list, 'リスト'); 6 7const html = ` 8<li id="question${accordionCount}" class="w-full mx-auto"> 9<div class="shadow-md"> 10<div class="tab w-full overflow-hidden border-t"> 11<input class="absolute opacity-0" id="tab-single-one" type="radio" name="tabs2" /> 12<label class="block p-5 leading-normal cursor-pointer" for="tab-single-one">第${accordionCount}問</label> 13<div class="tab-content overflow-hidden border-l-2 bg-gray-100 border-yellow-500 leading-normal"> 14<div class="p-5"> 15<div class="my-2"> 16<label class="block" for="description">問題</label> 17<textarea name="question${accordionCount}" placeholder="問題文" 18class="w-full focus:outline-none border focus:border-yellow-300" id="question${accordionCount}" 19name="question${accordionCount}" type="text"></textarea> 20</div> 21<div class="my-2"> 22<label class="block" for="${accordionCount}_choice1">選択肢1</label> 23<input required name="correct_choice1" value="${accordionCount}_choice1" type="radio"> 24<input required class="w-11/12 focus:outline-none border focus:border-yellow-300" 25placeholder="選択肢1" id="${accordionCount}_choice1" name="${accordionCount}_choice1" type="text"> 26</div> 27<div class="my-2"> 28<label class="block" for="${accordionCount}_choice1">選択肢2</label> 29<input required name="correct_choice1" value="${accordionCount}_choice2" type="radio"> 30<input required class="w-11/12 focus:outline-none border focus:border-yellow-300" 31placeholder="選択肢2" id="${accordionCount}_choice1" name="${accordionCount}_choice2" type="text"> 32</div> 33<div class="my-2"> 34<label class="block" for="${accordionCount}_choice1">選択肢3</label> 35<input required name="correct_choice1" value="${accordionCount}_choice3" type="radio"> 36<input required class="w-11/12 focus:outline-none border focus:border-yellow-300" 37placeholder="選択肢3" id="${accordionCount}_choice1" name="${accordionCount}_choice3" type="text"> 38</div> 39<div class="my-2"> 40<label class="block" for="${accordionCount}_choice1">選択肢4</label> 41<input required name="correct_choice1" value="${accordionCount}_choice4" type="radio"> 42<input required class="w-11/12 focus:outline-none border focus:border-yellow-300" 43placeholder="選択肢4" id="${accordionCount}_choice4" name="${accordionCount}_choice4" type="text"> 44</div> 45</div> 46</div> 47</div> 48</div> 49</li> 50`; 51 52addAccordion = () => { 53 accordionCount += 1; 54 console.log(accordionCount); 55 list.insertAdjacentHTML('beforeend', html); 56}; 57 58removeAccordion = () => {}; 59
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/09/12 01:56