Создать новую строку в таблице из объекта в массиве

Суть такая, надо впушивать объекты в массив а потом вывести все в таблицу. Пробовал без промисов, но я так понял во вторую функцию просто попадает пустой массив без объектов, а с промисами ничего не работает. Возможно кто то предложит более уместную логику и решение для данной задачи?(в дальнейшем, обьекты можно будет удалять, менять и т.д.). Извиняюсь за глупый вопрос и данный говнокод(новичок).

<html>
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <title></title>
        <meta name="description" content="">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link rel="stylesheet" href="style.css">
    </head>
    <body>

        <div class="main">

            <header>
                <button class="btn" id="seeButton">Просмотр таблицы</button>
                <button class="btn" id="addButton">Добавить запись</button>
                <button class="btn" id="deleteButton">Удалить запись</button>
                <button class="btn" id="updateButton">Обновить запись</button>
                <button class="btn" id="searcheButton">Поиск записей</button>
                <button class="btn" id="logButton">Просмотреть лог</button>

            </header>

            <div>




<table class="table" id="table_id">
                    <thead>
                        <tr>
                            <th>№</th>
                            <th>Фамилия</th>
                            <th>Должность</th>
                            <th>Год рождения</th>
                            <th>Оклад(грн)</th>
                        </tr>
                    </thead>
                    <tbody>
                        <tr>
                            <td>1</td>
                            <td>1</td>
                            <td>2</td>
                            <td>3</td>
                            <td>4</td>
                        </tr>
                      
                    </tbody>
                </table>


            </div>


        </div>  

        <script>
            var seeButton = document.getElementById("seeButton");
            var addButton = document.getElementById("addButton");
            var deleteButton = document.getElementById("deleteButton");
            var updateButton = document.getElementById("updateButton");
            var searcheButton = document.getElementById("searcheButton");
            var logButton = document.getElementById("logButton");
            
            addButton.onclick = add;
            

            let arr = [

            ]

            

            var count = 0;

        function add() {  
            return new Promise(function(resolve, reject) {
             count = count + 1;
             let fam = prompt("введите фамилию", "");
             let dol = prompt("введите должность", "");
             let date = prompt("введите год рождения", "");
             let salary = +prompt("введите оклад", "");  
            
             function User(fam, dol, date, salary){
                    this.fam = fam;
                    this.dol = dol;
                    this.date = date;
                    this.salary = salary;
             }

             var user = new User(fam, dol, date, salary)
             arr.push(user)
             console.log(arr)
            });
        }



        add.then(
            function addObj(arr){
                for(i=0; i<=arr.length; i++){
                    var tr = "<tr>";

                    /* Must not forget the $ sign */
                    tr += "<td>"+ i + "</td>" + "<td>" + arr[i].fam + "</td>" + "<td>" + arr[i].dol + "</td>" + "<td>" + arr[i].date + "</td>" + "<td>" + arr[i].salary  + "</td></tr>";

                    tbody.append(tr); // вставить tr в конец <tbody>
                    console.log("работает цикл")
                    }
                    console.log("работает без цикла")
            }    
        )
        </script>
    </body>





Ответы (1 шт):

Автор решения: Алексей Шиманский

var seeButton = document.getElementById("seeButton");
var addButton = document.getElementById("addButton");
var deleteButton = document.getElementById("deleteButton");
var updateButton = document.getElementById("updateButton");
var searcheButton = document.getElementById("searcheButton");
var logButton = document.getElementById("logButton");
var tbody = document.querySelector("#table_id tbody");

let arr = []

addButton.addEventListener('click', () => {
    let user = add();
    addObj(user, arr.length)
});


function add() {  
    let fam = prompt("введите фамилию", "");
    let dol = prompt("введите должность", "");
    let date = prompt("введите год рождения", "");
    let salary = +prompt("введите оклад", "");

    function User(fam, dol, date, salary) {
      this.fam = fam;
      this.dol = dol;
      this.date = date;
      this.salary = salary;
    }

    var user = new User(fam, dol, date, salary)
    arr.push(user)
    
    return user;    
}




function addObj(user, counter) {  
    var tr = `<tr>
<td>${counter}</td><td>${user.fam}</td><td>${user.dol}</td><td>${user.date}</td><td>${user.salary}</td>
</td>`;
    
    tbody.insertAdjacentHTML('beforeend', tr);        
}
<div class="main">
  <header>
    <button class="btn" id="seeButton">Просмотр таблицы</button>
    <button class="btn" id="addButton">Добавить запись</button>
    <button class="btn" id="deleteButton">Удалить запись</button>
    <button class="btn" id="updateButton">Обновить запись</button>
    <button class="btn" id="searcheButton">Поиск записей</button>
    <button class="btn" id="logButton">Просмотреть лог</button>
  </header>

  <div>
    <table class="table" id="table_id">
      <thead>
        <tr>
          <th>№</th>
          <th>Фамилия</th>
          <th>Должность</th>
          <th>Год рождения</th>
          <th>Оклад(грн)</th>
        </tr>
      </thead>
      <tbody></tbody>
    </table>
  </div>
</div>

→ Ссылка