製品計算機への新規購入の追加
まずは、ボタンをクリックするとテーブルに新しい購入行が追加されるようにしましょう。
add.addEventListener('click', function() {
let tr = document.createElement('tr');
let td;
td = document.createElement('td');
td.textContent = name.value;
td.classList.add('name');
tr.appendChild(td);
td = document.createElement('td');
td.textContent = price.value;
td.classList.add('price');
tr.appendChild(td);
td = document.createElement('td');
td.textContent = amount.value;
td.classList.add('amount');
tr.appendChild(td);
td = document.createElement('td');
td.textContent = price.value * amount.value;
td.classList.add('cost');
tr.appendChild(td);
td = document.createElement('td');
td.textContent = '削除';
td.classList.add('remove');
tr.appendChild(td);
table.appendChild(tr);
});
ただし、私が示した解決策には明らかなコードの重複という問題があります。実際のところ、各セルに対して同じコードを書いています。
テーブルセルを作成するための何らかの関数を持つことが適切でしょう。この関数は、最初のパラメータとしてテーブル行への参照を受け取り、2番目のパラメータとしてセルのテキストを受け取り、3番目のパラメータとしてセルのCSSクラス名を受け取るとします。
function createCell(tr, value, name) {
}
そのような関数があれば、上記のコードを次のように書き直すことができます。
add.addEventListener('click', function() {
let tr = document.createElement('tr');
createCell(tr, name.value, 'name');
createCell(tr, price.value, 'price');
createCell(tr, amount.value, 'amount');
createCell(tr, price.value * amount.value, 'cost');
createCell(tr, '削除', 'remove');
table.appendChild(tr);
});
私が説明した関数 createCell を実装してください。
新規購入を追加する私のコードをコピーしてください。 テーブルへの新規購入の追加をテストしてください。
関数 createCell を、作成されたテーブルセルを return で返すように修正してください。