ボタンを押したら、その値を加算し、もう一度同じボタンを押したら加算された分だけ引くプログラムを作成したいです。
加算は正常に行われるのですが、引き算が上手くいかず、NaNになってしまいます。
原因はどこにあるのでしょうか?
今回は、5000が加算されるボタンを押して、また同じボタンを押しています。
HTML
1<div class="center fixed_cost"><span class="sum">0</span>円</div> 2 3 <div class="container"> 4 <button type="button" class="buttons">家賃<br> 5 <span class="costs">80,000</span>円 6 </button> 7 <button type="button" class="buttons">光熱費<br> 8 <span class="costs">5,000</span>円 9 </button> 10 <button type="button" class="buttons">水道代<br> 11 <span class="costs">5,000</span>円 12 </button> 13以下省略
JavaScript
1// ボタンが押された時の表示を変更 2function Click() { 3 let btns = document.getElementsByClassName('buttons'); 4 let costs = document.getElementsByClassName('costs'); 5 let totalArr = []; 6 let flag = []; 7 8 for (let i = 0; i < btns.length; i++) { 9 btns[i].addEventListener('click', () => { 10 // CSSの表示変更 11 btns[i].classList.toggle('clicked'); 12 13 if (btns[i].classList.contains('clicked') == true) { 14 15 // 1,000などを1000にする 16 let cost = costs[i].innerHTML; 17 let convert = cost.replace(',', ''); 18 19 totalArr.push(Number(convert)); 20 flag[i] = 1; 21 22 console.log(`配列の中身:${totalArr}`); 23 console.log(`フラグ:${flag}`); 24 } else { 25 flag[i] = 0; 26 if (flag[i] === 0) { 27 totalArr[i] -= totalArr[i]; 28 } 29 30 console.log(`配列の中身:${totalArr}`); 31 console.log(`フラグ:${flag}`); 32 } 33 34 // 合計値を表示 35 let sum = document.querySelector('.sum'); 36 let total = totalArr.reduce((total, score) => { 37 return total + score; 38 }, 0); 39 40 console.log(`合計:${total}`); 41 }); 42 } 43}
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。