Dodawanie nowego zakupu w kalkulatorze produktów
Na początek zróbmy tak, aby po naciśnięciu przycisku do tabeli dodawany był nowy wiersz z zakupem:
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 = 'usuń';
td.classList.add('remove');
tr.appendChild(td);
table.appendChild(tr);
});
Przedstawione przeze mnie rozwiązanie ma jednak wyraźne problemy z duplikacją kodu: faktycznie dla każdej komórki piszemy ten sam kod.
Wskazane byłoby posiadanie funkcji do tworzenia komórki tabeli. Niech ta funkcja jako pierwszy parametr przyjmuje referencję do wiersza tabeli, drugim parametrem - tekst komórki tabeli, a trzecim - nazwę klasy CSS komórki:
function createCell(tr, value, name) {
}
Mając taką funkcję, moglibyśmy przepisać powyższy kod w następujący sposób:
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, 'usuń', 'remove');
table.appendChild(tr);
});
Zaimplementuj opisaną przeze mnie funkcję createCell.
Skopiuj mój kod do dodawania nowego zakupu. Przetestuj dodawanie nowego zakupu do tabeli.
Zmodyfikuj funkcję createCell tak,
aby zwracała przez return
utworzoną komórkę tabeli.