前提
html
1<td class="score-p1"><input type="number"></td>
に値を入力したら
html
1<td id="sum-p1"></td>
へ計算結果を反映。
html
1<td class="score-p2"><input type="number"></td>
に値を入力したら
html
1<td id="sum-p2"></td>
へ計算結果を反映させたいです。
実現したいこと
現在、class="score-p1"に値を入力した際にid="sum-p1"に計算結果が反映されるJavaScriptは書けています。
今後、class="score-p2"、class="score-p3"………と列を増やしていく予定ですが、列を増やしたときのJavaScriptのスマートな書き方が分かりません。
該当のソースコード
html
1<table> 2 <tbody id="score"> 3 <tr> 4 <th>1</th> 5 <td class="score-p1"><input type="number"></td> 6 <td class="score-p2"><input type="number"></td> 7 </tr> 8 <tr> 9 <th>2</th> 10 <td class="score-p1"><input type="number"></td> 11 <td class="score-p2"><input type="number"></td> 12 </tr> 13 <tr> 14 <th>3</th> 15 <td class="score-p1"><input type="number"></td> 16 <td class="score-p2"><input type="number"></td> 17 </tr> 18 <tr> 19 <th>4</th> 20 <td class="score-p1"><input type="number"></td> 21 <td class="score-p2"><input type="number"></td> 22 </tr> 23 <tr> 24 <th>5</th> 25 <td class="score-p1"><input type="number"></td> 26 <td class="score-p2"><input type="number"></td> 27 </tr> 28 </tbody> 29 <tfoot> 30 <tr> 31 <th>合計</th> 32 <td id="sum-p1"></td> 33 <td id="sum-p2"></td> 34 </tr> 35 </tfoot> 36</table>
以下はclass="score-p1"に数値を入力したときid="sum-p1"に結果が反映されるJavaScriptです。
js
1window.addEventListener('DOMContentLoaded', () => { 2 3score.addEventListener('input', () => { 4 // 要素を取得 5 const score = document.getElementById('score'); 6 const scoreElements = score.querySelectorAll('.score-p1 input'); 7 var price = 0; 8 9 // 取得した要素を反復処理 10 for (let i = 0; i < scoreElements.length; i += 1) { 11 const element = scoreElements[i]; 12 if (!isNaN(element.valueAsNumber)) 13 price += element.valueAsNumber; 14 } 15 16 document.getElementById('sum-p1').innerText = price; 17}); 18 19})
class="score-p2"、class="score-p3"………と列を増やしたときにどういう書き方をすべきかご教示いただけたらと思います。
どうぞよろしくお願いいたします。
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。