- Вы определяете пустой объект.Вам нужен массив
[]
, и вы можете предварительно заполнить его или нет.Предварительно заполненный массив будет выглядеть так:
var persons = [{ name:"Fred", phone:" 123"}, {name:"Bob", phone:"234"}];
- Вы должны вызывать функцию с помощью (), как в
showTable()
- Вы не сохраняли людей при нажатии кнопки add, поэтому ясоздал addTable, который каждый раз вызывает showTable
var persons = [];
function showTable() {
str = "";
for (var i = 0; i < persons.length; i++) {
str += `<tr>
<td>${persons[i].name}</td>
<td>${persons[i].phone}</td>
</tr>`
}
document.querySelector("table tbody").innerHTML = str;
}
function addTable() {
persons.push({
name: document.getElementById("name").value,
phone: document.getElementById("phone").value
})
showTable();
}
window.addEventListener("load", showTable);
<!DOCTYPE html>
<html>
<head>
<title>PhoneBook</title>
</head>
<body>
<h1>PhoneBook</h1>
<form>
<label for="name">Name</label>
<input type="text" name="name" id="name">
<label for="phone">Phone</label>
<input type="text" name="phone" id="phone">
<input type="button" class="btn" value="Add contact" onclick="addTable();">
</form>
<div id="containerPhoneBook">
<table id="inputs">
<thead>
<tr>
<td>Name</td>
<td>Phone</td>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
</body>
</html>
Видите ли, я использую обработчик событий для ожидания существования таблицы.Не рекомендуется использовать встроенные обработчики событий, чтобы вы могли также сделать document.querySelector(".btn").addEventListener("click",addTable)