我想通过单击从 JSON 数据返回 id 的删除按钮来删除一行,我已经在 DOM 中创建了所有元素。我正在尝试添加删除功能,但它只会删除 JSON 数据,不会删除 DOM。我尝试过面向对象的方式,但我不知道如何使用它们。如果有任何建议将非常有帮助。
let names = {
nameList: [{
userId: 1,
name: "abc",
age: "25",
},
{
userId: 2,
name: "def",
age: "23",
},
{
userId: 3,
name: "ghi",
age: "18",
},
{
userId: 4,
name: "jkl",
age: "19",
},
],
find: function() {
console.log("Find function");
},
add: function() {
return this.nameList[1];
},
delete: function() {
console.log("Delete function");
},
};
const createEle = (data, idx) => {
let main = document.createElement("div");
let container = document.getElementById("container");
let title = document.createElement('div');
let age = document.createElement('div');
let remove = document.createElement('div');
let update = document.createElement('div');
main.className = "main";
title.className = "title";
age.className = "age";
remove.className = "delete";
update.className = "update";
container.appendChild(main);
main.appendChild(title);
main.appendChild(age);
main.appendChild(update);
main.appendChild(remove);
remove.addEventListener("click", deleteEle.bind(event, idx));
title.append(data.name);
age.append(data.age);
update.append("Edit");
remove.append("Delete");
}
const displayData = () => {
names.nameList.map(data => {
createEle(data, data.userId);
});
}
const deleteEle = (idx) => {
names.nameList.splice(idx - 1, 1)
console.log("deleted", idx, names.nameList);
}
displayData();
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Todo list</title>
<link rel="stylesheet" href="./style.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Montserrat&display=swap" rel="stylesheet">
</head>
<body>
<div class="search">
<input type="text" value="" class="input">
<button class="find">Find</button>
<button class="add">Add</button>
</div>
<div class="container" id="container"></div>
<script src="./script.js"></script>
</body>
</html>