Adición de nueva compra en la calculadora de productos
Para empezar, hagamos que al pulsar el botón se añada una nueva fila con la compra a la tabla:
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 = 'eliminar';
td.classList.add('remove');
tr.appendChild(td);
table.appendChild(tr);
});
La solución que he presentado, sin embargo, tiene problemas evidentes con la duplicación de código: básicamente para cada celda escribimos el mismo código.
Sería conveniente tener una función para crear una celda de tabla. Que esta función reciba como primer parámetro una referencia a la fila de la tabla, como segundo parámetro - el texto de la celda de la tabla, y como tercero - el nombre de la clase CSS de la celda:
function createCell(tr, value, name) {
}
Teniendo tal función podríamos reescribir el código anterior de la siguiente manera:
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, 'eliminar', 'remove');
table.appendChild(tr);
});
Implemente la función createCell que he descrito.
Copie mi código para añadir una nueva compra. Pruebe la adición de una nueva compra a la tabla.
Modifique la función createCell de manera
que devuelva mediante return
la celda de tabla creada.