前提・実現したいこと
javascriptにて、「追加ボタン」を押すことでcloneNode(true)でコピーした要素が複製して追加されるようにしたいです。
複製はきちんとできています。
しかし、イベント発火する対象のボタンがもともとあったボタンでしか反応しません。
実現したいこと
- 「追加ボタン」を押す
- イベント発火して複製した要素が下に追加される
- 追加した要素内に新たに設置した「追加ボタン」を押す
- 複製される
という繰り返しを行いたいのですが、イベント発火の対象のボタンを切り替えることができずに困っております。
よろしくお願いいたします。
該当のソースコード
javascript
1window.addEventListener('load', function (){ 2 const createTimeZone = (btnAreaCount) => { 3 let timeAreaCount = document.querySelectorAll(".container").length; 4 let timeArea = document.getElementById(`card-area-${timeAreaCount}`); 5 let cloneElement = timeArea.cloneNode(true); 6 cloneElement.id = `card-area-${timeAreaCount + 1}`; 7 btnElement = cloneElement.querySelector(`#add-btn-${btnAreaCount}`); 8 btnElement.id = `add-btn-${btnAreaCount + 1}`; 9 timeArea.after(cloneElement); 10 }; 11 12 let btnAreaCount = document.querySelectorAll(".addbtn").length; 13 let addBtn = document.getElementById(`add-btn-${btnAreaCount}`); 14 15 addBtn.addEventListener('click', function (){ 16 createTimeZone(btnAreaCount); 17 btnAreaCount += 1; 18 }) 19});
html
1<div> 2 <div class="card-header fixed-bottom text-center"> 3 <h3 id="RealTimeArea1"class="card-title"></h3> 4 </div> 5 6 <div class="container" id="card-area-1"> 7 <div class="card mb-3 shadow-sm text-center"> 8 <div class="card-body"> 9 <div class="container-fluid"> 10 <h5><label for="InputDateTime">現時表示の時刻を選択</label></h5> 11 <input type="datetime-local" class="shadow-sm" style= "width: 190px;" id="InputDateTime"> 12 <input id="InputSecondTime" type="number" class="shadow-sm" placeholder="秒数を入力" style= "width: 110px;" min="0" max="59"><label>秒</label> 13 <button type="button" class="btn btn-primary btn-sm" id="check-current-time">確認</button> 14 <h3 id="RealTimeArea1"class="card-title"></h3> 15 <h2 id="TimeDeference"></h2> 16 <h5><label for="InputDateTimePass">再生中の表示時刻を選択</label></h5> 17 <input type="datetime-local" class="shadow-sm" id="InputDateTimePass" style= "width: 190px;"> 18 <input id="InputSecondTimePass" type="number" class="shadow-sm" placeholder="秒数を入力" style= "width: 110px;" min="0" max="59"><label>秒</label> 19 <button type="button" class="btn btn-primary btn-sm" id="check-correction-time">確認</button> 20 <h2 id ="CorrectionTime"></h2> 21 <div class="text-center addbtn"> 22 <button class="m-2 btn btn-outline-success" style="width: 190px;" id="add-btn-1">追加</button> 23 </div> 24 </div> 25 </div> 26 </div> 27 </div> 28 </div>
問題点
デバッグで確認したところ、複製して追加されたadd-btn-番号
は追加するごとに数字が増えるようにできているのですが、複製先のボタンを押した時に、イベント発火元のaddBtn
が変化しておらず、複製元のボタンのDOMを取得していることが原因だと思うのですが、変えることができません。
補足情報(FW/ツールのバージョンなど)
OS: mac Bigsur
bootstrap
ブラウザ:chrome
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/29 08:29