Dodajanje novega nakupa v kalkulatorju produktov
Za začetek naredimo, da se ob kliku na gumb v tabelo doda nova vrstica z nakupom:
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 = 'izbriši';
td.classList.add('remove');
tr.appendChild(td);
table.appendChild(tr);
});
Priložena rešitev pa ima očitne težave s podvajanjem kode: dejansko za vsako celico pišemo isto kodo.
Primerno bi bilo imeti neko funkcijo za ustvarjanje tabele celice. Naj ta funkcija prvi parameter sprejme referenco na vrstico tabele, drugi parameter - besedilo celice tabele, tretji pa - ime CSS razreda celice:
function createCell(tr, value, name) {
}
S takšno funkcijo bi lahko prepisali zgoraj navedeno kodo na naslednji način:
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, 'izbriši', 'remove');
table.appendChild(tr);
});
Implementirajte opisano funkcijo createCell.
Kopirajte mojo kodo za dodajanje novega nakupa. Testirajte dodajanje novega nakupa v tabelo.
Modificirajte funkcijo createCell tako,
da preko return
vrne ustvarjeno celico tabele.