Naujo pirkimo pridėjimas produktų skaičiuoklėje
Pirmiausia padarykime taip, kad paspaudus mygtuką į lentelę būtų pridedama nauja eilutė su pirkimu:
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 = 'pašalinti';
td.classList.add('remove');
tr.appendChild(td);
table.appendChild(tr);
});
Mano pateiktas sprendimas, tačiau, turi aiškius problemas su kodo dubliavimu: faktiškai kiekvienam langeliui mes rašome tą patį kodą.
Būtų tikslinga turėti tam tikrą funkciją lentelės langelių kūrimui. Tegul ši funkcija pirmu parametru priima nuorodą į lentelės eilutę, antru parametru - lentelės langelio tekstą, o trečiu - lentelės langelio CSS klasės pavadinimą:
function createCell(tr, value, name) {
}
Turėdami tokią funkciją mes galėtume perrašyti aukščiau pateiktą kodą taip:
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, 'pašalinti', 'remove');
table.appendChild(tr);
});
Įgyvendinkite manęs aprašytą funkciją createCell.
Nukopijuokite mano kodą naujo pirkimo pridėjimui. Ištestuokite naujo pirkimo pridėjimą į lentelę.
Modifikuokite funkciją createCell taip,
kad ji grąžintų per return
sukurtą lentelės langelį.