Tuotteiden laskimen kokonaissumma JavaScriptillä

Tehdään nyt niin, että taulukon alle tulostetaan ostosten kokonaissumma. Tässä on hienouksia.

Jos mietitään tilannetta, käy selväksi, että summan tulisi muuttua paitsi uuden ostoksen lisäyksen yhteydessä, myös poistettaessa ja muokattaessa.

Ehdotan tällöin, että teemme jonkinlaisen funktion, kutsukaamme sitä recountTotal:ksi, joka suorittaa summan täyden uudelleenlaskennan. Se siis käy läpi kaikki ostokset silmukassa ja laskee yhteen niiden cost -sarakkeen sisällön.

Kun meillä on tällainen funktio, voimme kutsua sitä missä tahansa kohdassa, jossa summaan voi tulla muutoksia. Tietenkin on hieman optimoimatonta laskea kokonaissumma uudelleen joka kerta. Mutta saamme siitä huomattavan koodin yksinkertaistamisen.

Käytetään ehdotettua funktiota uuden ostoksen luomisen yhteydessä:

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, 'poista', 'remove');
  
  table.appendChild(tr);
  recountTotal(); // lasketaan kokonaissumma uudelleen
});

Tässä on kuvatun funktion runko:

javascriptfunction recountTotal() {
  let costs = table.querySelectorAll('.cost');
  
  if (costs) {
    // etsimme summan ja kirjoitamme sen #total -elementtiin
  }
}
Задание 1

Toteuta kuvaamani funktio recountTotal.