ボタンが押された時に値を配列に格納し、もう一度ボタンが押されたら押されたボタンの値を取り除く処理を行いたいのですが、格納するとNaNになり、もう一度ボタンを押すとcost is not definedとエラー表示されます。
どこが原因なのかアドバイスをお願い致します。
格納する時に後からreduceで数値計算するため、Numberでキャストしています。
HTML
1<div class="container"> 2 <button type="button" class="buttons">家賃<br> 3 <span class="costs">80,000</span>円 4 </button> 5 <button type="button" class="buttons">光熱費<br> 6 <span class="costs">5,000</span>円 7 </button> 8 <button type="button" class="buttons">水道代<br> 9 <span class="costs">5,000</span>円 10 </button> 11// 以下省略
JavaScript
1let btns = document.getElementsByClassName('buttons'); 2 let costs = document.getElementsByClassName('costs'); 3 let totalArr = []; 4 5 for (let i = 0; i < btns.length; i++) { 6 btns[i].addEventListener('click', () => { 7 btns[i].classList.toggle('clicked'); 8 9 // ボタンが押された場合の計算用配列の処理 10 if (btns[i].classList.contains('clicked') == true) { 11 let cost = costs[i].innerHTML; 12 totalArr.push(Number(cost)); 13 console.log(totalArr); 14 } 15 else { 16 totalArr.pop(Number(cost)); 17 console.log(totalArr); 18 } 19 }); 20 }
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/26 12:03