вопросы пишите мне в телеграмм +375298176892
можно скачать офлайн версию сайта: code.mu old.code.mu

Добавление новой покупки в калькуляторе продуктов

Для начала давайте сделаем так, чтобы по нажатию на кнопку в таблицу добавлялся новый ряд с покупкой:

add.addEventListener('click', function() { let tr = document.createElement('tr'); let td; td = document.createElement('td'); td.innerHTML = name.value; td.classList.add('name'); tr.appendChild(td); td = document.createElement('td'); td.innerHTML = price.value; td.classList.add('price'); tr.appendChild(td); td = document.createElement('td'); td.innerHTML = amount.value; td.classList.add('amount'); tr.appendChild(td); td = document.createElement('td'); td.innerHTML = price.value * amount.value; td.classList.add('cost'); tr.appendChild(td); td = document.createElement('td'); td.innerHTML = 'удалить'; td.classList.add('remove'); tr.appendChild(td); table.appendChild(tr); });

Приведенное мною решение, однако, имеет явные проблемы с дублированием кода: фактически для каждой ячейки мы пишем один и тот же код.

Уместно было бы иметь некоторую функцию для создания ячейки таблицы. Пусть эта функция первым параметром принимает ссылку на ряд таблицы, вторым параметром - текст ячейки таблицы, а третьим - имя CSS класса ячейки:

function createCell(tr, value, name) { }

Имея такую функцию мы бы смогли переписать приведенный выше код следующим образом:

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, 'удалить', 'remove'); table.appendChild(tr); });

Реализуйте описанную мною функцию createCell.

Скопируйте мой код для добавления новой покупки. Потестируйте добавление новой покупки в таблицу.

Модифицируйте функцию createCell так, чтобы она возвращала через return созданную ячейку таблицы.