Цель: получить все данные строки (ячейки) таблицы и добавить их в массив
Проблема: если имеется более 1 строки, она перезаписывает ранее добавленные элементы массива, а не добавляет их в конец массива. Это приводит к тому, что в массиве последний набор данных строки таблицы дублируется/утроивается/и т. д. (столько строк, сколько существует в таблице)
Настройка: У меня есть динамическая таблица html, в которую пользователь может добавлять строки, вводя имя пользователя и возраст и нажимая кнопку «Добавить». Кнопка «Загрузить» должна получить элементы тела таблицы и заполнить объект, где после цикла for должен получить внутренний текст, обновить объект и нажать () объект в массив. Но вот результат: Снимок экрана console.log массива
let roleArr = [];
loadBtn.addEventListener("click", () => {
roleTableData();
});
function roleTableData() {
let test = tblRows.children;
const collectRoles = {
uName: "",
uAge: "",
};
for (let i = 0; i < test.length; i++) {
collectRoles.uName= test[i].children[0].innerText;
collectRoles.uAge= test[i].children[1].innerText;
roleArr.push(collectRoles);
}
}
Почему бы не реорганизовать код так, чтобы вы сначала добавляли имя и возраст как объект в массив, а затем использовали массив для создания таблицы? Затем вместо управления html вы управляете только данными, позволяя шаблону создавать новую строку каждый раз, когда создается объект.
Спасибо за совет @Chris. Я сейчас изучаю этот вариант. Гораздо разумнее сделать так, как вы предложили.