Uuden ostoksen lisääminen tuotelaskurissa
Aluksi tehdään niin, että painiketta painamalla taulukkoon lisätään uusi rivi ostoksella:
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 = 'poista';
td.classList.add('remove');
tr.appendChild(td);
table.appendChild(tr);
});
Esittämäni ratkaisussa on kuitenkin selviä ongelmia koodin toistamisen kanssa: käytännössä jokaiselle solulle kirjoitamme saman koodin.
Olisi tarkoituksenmukaista olla jokin funktio taulukkosolun luomiseksi. Olkoon tämä funktio ensimmäisenä parametrina viittaus taulukkoriviin, toisena parametrina - taulukkosolun teksti, ja kolmantena - taulukkosolun CSS-luokan nimi:
function createCell(tr, value, name) {
}
Jos meillä olisi tällainen funktio, voisimme kirjoittaa yläpuolella olevan koodin uudelleen seuraavasti:
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, 'poista', 'remove');
table.appendChild(tr);
});
Toteuta kuvaamani funktio createCell.
Kopioi koodini uuden ostoksen lisäämiseksi. Testaa uuden ostoksen lisäämistä taulukkoon.
Muokkaa funktiota createCell niin,
että se palauttaa return:lla
luodun taulukkosolun.