Pridanie nového nákupu v kalkulačke potravín
Na začiatok urobme to, aby sa po kliknutí na tlačidlo do tabuľky pridal nový riadok s nákupom:
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 = 'odstrániť';
td.classList.add('remove');
tr.appendChild(td);
table.appendChild(tr);
});
Uvedené riešenie však má zjavné problémy s duplikáciou kódu: v podstate pre každú bunku píšeme rovnaký kód.
Bolo by vhodné mať nejakú funkciu pre vytvorenie bunky tabuľky. Nech táto funkcia prvým parametrom prijíma odkaz na riadok tabuľky, druhým parametrom - text bunky tabuľky, a tretím - názov CSS triedy bunky:
function createCell(tr, value, name) {
}
S takouto funkciou by sme mohli prepísať vyššie uvedený kód nasledovne:
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, 'odstrániť', 'remove');
table.appendChild(tr);
});
Implementujte opísanú funkciu createCell.
Skopírujte môj kód pre pridanie nového nákupu. Otestujte pridanie nového nákupu do tabuľky.
Upravte funkciu createCell tak,
aby vracala cez return
vytvorenú bunku tabuľky.