前提・実現したいこと
チェックボックスの中で、カウントされるタイプを2つに分け、それぞれカウントするコードを記述しました。
ただ、中身の計算式は、ほぼ同じになります。
何かまとめる方法は、ないでしょうか?
アドバイをいただけたらと思います。よろしくお願いいたします。
該当のソースコード
javascript
1function checkbox() { 2 3 // チェックされたチェックボックスを取得 4 const checksA = document.getElementsByClassName("checks_one") 5 const checksB = document.getElementsByClassName("checks_two") 6 const btn = document.getElementById("btn"); 7 8 btn.addEventListener("click", () => { 9 10 let countA = 0; 11 for (let i = 0; i < checksA.length; i++) { 12 if (checksA[i].checked){ 13 countA = countA + 1 ; 14 console.log(countA) 15 } 16 } 17 18 console.log(`タイプAの合計は${countA}です`) 19 const countSumA = document.getElementById("sum_one") 20 countSumA.innerHTML = countA 21 22 23 24 let countB = 0; 25 for (let i = 0; i < checksB.length; i++) { 26 if (checksB[i].checked){ 27 countB = countB + 1 ; 28 console.log(countB) 29 } 30 } 31 32 console.log(`タイプBの合計は${countB}です`) 33 const countSumB = document.getElementById("sum_two") 34 countSumB.innerHTML = countB 35 }) 36} 37window.addEventListener("load",checkbox)
試したこと
javascript
1if (document.getElementsByClassName("checks_one")){ 2 const checks = checksA 3 } else { 4 const checks = checksB 5 }
if文を使い変数の中身を変えたらいけるのでは?っと思っていたのですが、スコープ外になったりと、うまくいきませんでした。
アドバイスの程よろしくお願いします。
###追記
javascript
1function countCheckedCheckbox(className, sumElement, logname) { 2 const checks = document.getElementsByClassName(className); 3 let count = 0 4 for (let i = 0; i < checks.length; i++){ 5 if (checks[i].checked){ 6 count = count + i; 7 } 8 } 9 10 console.log(`${logname}の合計は${count}です`); 11 sumElement.innerHTML = count; 12} 13 14function checkbox() { 15 16 const checksA = document.getElementsByClassName("checks_one"); 17 const checksB = document.getElementsByClassName("checks_two"); 18 const btn = document.getElementById("btn") 19 20 btn.addEventListener("click", () => { 21 22 const countSumA = document.getElementById("sum_one") 23 const countSumB = document.getElementById("sum_two") 24 25 countCheckedCheckbox(checksA, countSumA, "タイプA"); 26 countCheckedCheckbox(checksB, countSumB, "タイプB"); 27 }) 28 29} 30window.addEventListener("load",checkbox)
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/10/11 05:54
2020/10/11 22:21