Я пытаюсь создать кнопку редактирования, чтобы при ее нажатии она выделяла всю строку и заполняла указанные выше значения для нее значениями для изменений или обновлений.Я не могу заставить свой код работать более 3 строк, потому что он где-то застрял.В приведенном ниже коде кнопка «Изменить» не отображает никаких ошибок в консоли, поэтому я не могу понять, что я сделал неправильно.
Я пытаюсь создать телефонную книгу, используя динамическую таблицу, которая требуетиметь 2 кнопки, одну с именем изменить и одну с именем удалить.Проблема в том, что кнопка модификации не работает.Заранее спасибо.
var clientList = [{
name: "Nume1",
lastName: "Prenume1",
phone: ["0758066000"],
initialOrder: 1
},
{
name: "Nume3",
lastName: "Prenume3",
phone: ["0758000000"],
initialOrder: 2
},
{
name: "Nume2",
lastName: "Prenume2",
phone: ["0758000000", "0758000000"],
initialOrder: 3
},
{
name: "Nume4",
lastName: "Prenume4",
phone: ["075803481"],
initialOrder: 4
},
{
name: "Nume5",
lastName: "Prenume5",
phone: ["07942990220"],
initialOrder: 5
}
];
//drawing the table
function showDataInTable(arr) {
var tableBody = document.getElementById('tableBody');
var tableData = "";
for (var i = 0; i < arr.length; i++) {
tableData += `
<tr>
<td>${clientList[i].name}</td>
<td>${clientList[i].lastName}</td>
<td>${clientList[i].phone}</td>
<td data-index ="${i}" data-id ="modify" class="buttons1">modify</td>
<td data-index ="${i}" data-id ="delete" class="buttons2">delete</td>
<tr>
`;
}
tableBody.innerHTML = tableData;
}
showDataInTable(clientList);
//writing the sorting function
function sort(arr, parameter, sortDirection) {
for (var i = 0; i < arr.length; i++) {
for (var j = i + 1; j < arr.length; j++) {
if (sortDirection === "up") {
if (arr[i][parameter] > arr[j][parameter]) {
var temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
} else if (sortDirection === "down") {
if (arr[i][parameter] < arr[j][parameter]) {
var temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}
showDataInTable(arr);
}
//table click event
document.getElementById("table").addEventListener("click", tableClicked);
var sortDirection;
var index;
var editingTable;
function tableClicked() {
//table delete
function delClient(arr, index) {
arr.splice(index, 1);
}
index = Number(event.target.parentElement.rowIndex - 1);
if (event.currentTarget.dataset.id == "delete") {
delClient(clientList, index);
showDataInTable(clientList);
}
// table edit
if (event.currentTarget.dataset.id == "modify") {
document.getElementById("nameInput").delete = clientList[index].name;
document.getElementById("lastNameInput").value = clientList[index].lastName;
document.getElementById("phoneInput").value = clientList[index].phone;
document.getElementById("submit").value = "SAVE";
}
//table sorting
if (event.target.tagName == "TH") {
var headers = document.getElementsByTagName("th");
for (var i = 0; i < headers.length; i++) {
headers[i].classList.remove("selected");
}
event.target.classList.add("selected");
if (sortDirection == "up") sortDirection = "down";
else sortDirection = "up";
var parameter = event.target.id;
sort(clientList, parameter, sortDirection);
}
}
// when form is clicked
document.getElementById("myForm").addEventListener("click", formClicked);
function formClicked() {
//add client or edit existing
if (event.target.id == "submit") {
event.preventDefault();
var name = document.getElementById("nameInput").value;
var lastName = document.getElementById("lastNameInput").value;
var phone = document.getElementById("phoneInput").value;
phone = phone.split(",");
if (name && lastName && phone) {
if (editingTable == true) {
clientList[index].name = name;
clientList[index].lastName = lastName;
clientList[index].phone = phone;
document.getElementById("submit").value = "ADD CONTACT";
editingTable = false;
} else {
var newClient = {
name: name,
lastName: lastName,
phone: phone
}
clientList.push(newClient);
}
//redraw the table
showDataInTable(clientList);
//reset input fields
document.getElementById("nameInput").value = "";
document.getElementById("lastNameInput").value = "";
document.getElementById("phoneInput").value = "";
} else {
alert("INPUT FIELDS ARE INCOMPLETE!");
}
}
}
//make sure phoneInput gets numbers
document.getElementById("phoneInput").addEventListener("keydown", checkInput);
document.getElementById("phoneInput").addEventListener("input", checkInput);
function checkInput() {
if (/[^0-9]/.test(event.key) && event.keyCode !== 8) {
event.preventDefault();
}
}
* {
padding: 0;
margin: 0;
box-sizing: border-box;
}
#header {
font-family: 'Press Start 2P', cursive;
font-size: 40px;
color: dodgerblue;
margin-top: 30px;
}
body {
text-align: center;
}
p {
margin-bottom: 10px;
}
form {
border: 1px solid lightgray;
padding: 10px;
display: flex;
flex-flow: row wrap;
align-items: center;
-webkit-box-shadow: 10px 10px 15px -1px rgba(59, 89, 152, 0.85);
-moz-box-shadow: 10px 10px 15px -1px rgba(59, 89, 152, 0.85);
box-shadow: 10px 10px 15px -1px rgba(59, 89, 152, 0.85);
}
.input {
margin-left: 300px;
margin-right: 300px;
margin-top: 20px;
}
#name {
margin: 5px 10px 5px 0;
}
#lastName {
margin: 5px 10px 5px 0;
}
#phone {
margin: 5px 10px 5px 0;
}
input {
vertical-align: middle;
margin: 5px 10px 5px 0;
padding: 10px;
background-color: #fff;
border: 1px solid grey;
width: 250px;
}
#submit {
background-color: dodgerblue;
border: 1px solid #ddd;
color: white;
}
#submit:hover {
background-color: lightblue;
color: black;
}
table {
border-collapse: collapse;
width: 69%;
margin-top: 50px;
margin-left: auto;
margin-right: auto;
-webkit-box-shadow: 10px 10px 15px -1px rgba(59, 89, 152, 0.85);
-moz-box-shadow: 10px 10px 15px -1px rgba(59, 89, 152, 0.85);
box-shadow: 10px 10px 15px -1px rgba(59, 89, 152, 0.85);
}
td {
padding: 5px;
cursor: pointer;
border-bottom: 1px solid lightgrey;
font-size: 20px;
border-left: 1px solid grey;
}
th {
padding: 5px;
font-size: 25px;
background-color: dodgerblue;
color: white;
font-weight: 100;
cursor: pointer;
}
@media (max-width: 800px) {
input {
margin: 10px 0;
}
form {
flex-direction: column;
align-items: stretch;
}
}
.selected {
background-color: lightskyblue;
border: 3px solid white;
color: black;
}
.buttons1:hover {
background-color: lightgreen;
}
.buttons2:hover {
background-color: lightcoral;
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="description" content="Agenda telefonica">
<meta name="author" content="Adelina Lipsa">
<meta name="keywords" content="HTML,CSS,JavaScript">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Agenda telefonica</title>
<link href="stylesheet.css" rel="stylesheet" type="text/css">
<script src="javascript.js" defer></script>
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.2/css/solid.css" integrity="sha384-ioUrHig76ITq4aEJ67dHzTvqjsAP/7IzgwE7lgJcg2r7BRNGYSK0LwSmROzYtgzs" crossorigin="anonymous">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.2/css/fontawesome.css" integrity="sha384-sri+NftO+0hcisDKgr287Y/1LVnInHJ1l+XC7+FOabmTTIK0HnE2ID+xxvJ21c5J" crossorigin="anonymous">
<link href="https://fonts.googleapis.com/css?family=Press+Start+2P&display=swap" rel="stylesheet">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
</head>
<body>
<h1 id="header"><i class="fas fa-phone-square"></i> Phone book</h1>
<div id="wrapper">
<div class="input">
<form id="myForm">
<p>Nume:</p>
<input type="text" id="nameInput">
<p>Prenume:</p>
<input type="text" id="lastNameInput">
<p>Telefon:</p>
<input type="text" id="phoneInput">
<input type="submit" id="submit" value="ADD CONTACT">
</form>
</div>
<div>
<table id="table">
<thead id="thead">
<tr>
<th id="name">Nume <i class="fas fa-sort"></i></th>
<th id="lastName">Prenume <i class="fas fa-sort"></i></th>
<th id="phone">Telefon <i class="fas fa-sort"></i></th>
<th colspan="2"></th>
</tr>
</thead>
<tbody id="tableBody"></tbody>
</table>
</div>
</div>
</body>
</html>