Přidání nového nákupu v kalkulačce produktů
Pro začátek udělejme, aby se po kliknutí na tlačítko do tabulky přidal nový řádek s nákupem:
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 = 'smazat';
td.classList.add('remove');
tr.appendChild(td);
table.appendChild(tr);
});
Uvedené řešení však má zjevné problémy s duplikací kódu: fakticky pro každou buňku píšeme stejný kód.
Bylo by vhodné mít nějakou funkci pro vytvoření buňky tabulky. Nechť tato funkce přijímá jako první parametr odkaz na řádek tabulky, druhým parametrem - text buňky tabulky, a třetím - název CSS třídy buňky:
function createCell(tr, value, name) {
}
S takovou funkcí bychom mohli přepsat uvedený kód následujícím způsobem:
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, 'smazat', 'remove');
table.appendChild(tr);
});
Implementujte popsanou funkci createCell.
Zkopírujte můj kód pro přidání nového nákupu. Otestujte přidání nového nákupu do tabulky.
Upravte funkci createCell tak,
aby vracela pomocí return
vytvořenou buňku tabulky.