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:

javascriptadd.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:

javascriptfunction createCell(tr, value, name) {
  
}

Mając taką funkcję, moglibyśmy przepisać powyższy kod w następujący sposób:

javascriptadd.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);
});
Задание 1

Zaimplementuj opisaną przeze mnie funkcję createCell.

Задание 2

Skopiuj mój kod do dodawania nowego zakupu. Przetestuj dodawanie nowego zakupu do tabeli.

Задание 3

Zmodyfikuj funkcję createCell tak, aby zwracała przez return utworzoną komórkę tabeli.