add
This commit is contained in:
76
index.html
Normal file
76
index.html
Normal file
@@ -0,0 +1,76 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>Document</title>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<form onsubmit="save(event)">
|
||||||
|
<h2>Thông Tin Học Viên</h2>
|
||||||
|
<div>
|
||||||
|
<span>Họ Và Tên </span>
|
||||||
|
<input type="text" name="name">
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<span>Email</span>
|
||||||
|
<input type="email" name="email">
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<span>Số Điện Thoại</span>
|
||||||
|
<input type="text" name="phoneNumber">
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<span>Quê quán </span>
|
||||||
|
<input type="text" name="address">
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<span>Giới Tính </span>
|
||||||
|
Nam <input type="radio" name="gender" value="true">
|
||||||
|
Nữ <input type="radio" name="gender" value="false">
|
||||||
|
</div>
|
||||||
|
<button>lưu</button>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<input id="se_ip" type="text"> <button onclick="search()">search</button>
|
||||||
|
|
||||||
|
|
||||||
|
<table border="1">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>#</th>
|
||||||
|
<th>Họ Tên</th>
|
||||||
|
<th>Email</th>
|
||||||
|
<th>Điện Thoại</th>
|
||||||
|
<th>Địa Chỉ</th>
|
||||||
|
<th>Giới Tính</th>
|
||||||
|
<th>Hành Động</th>
|
||||||
|
<th>
|
||||||
|
<button onclick="sapXep()">Sắp Xếp Alpha</button>
|
||||||
|
</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<!-- <tr>
|
||||||
|
<td>1</td>
|
||||||
|
<td></td>
|
||||||
|
<td></td>
|
||||||
|
<td></td>
|
||||||
|
<td></td>
|
||||||
|
<td></td>
|
||||||
|
<td>
|
||||||
|
<button>Xóa</button>
|
||||||
|
<button>Sửa</button>
|
||||||
|
</td>
|
||||||
|
<td></td>
|
||||||
|
</tr> -->
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<script src="main.js"></script>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
130
main.js
Normal file
130
main.js
Normal file
@@ -0,0 +1,130 @@
|
|||||||
|
let countId = 0;
|
||||||
|
let students = [
|
||||||
|
{
|
||||||
|
id: -1,
|
||||||
|
name: "NTB Phước",
|
||||||
|
email: "a@g.c",
|
||||||
|
phoneNumber: "0329577177",
|
||||||
|
address: "HCM",
|
||||||
|
gender: true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
if(localStorage.getItem("students")) {
|
||||||
|
students = JSON.parse(localStorage.getItem("students"))
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const tbodyEL = document.querySelector("tbody");
|
||||||
|
const se_ipEL = document.querySelector("#se_ip");
|
||||||
|
|
||||||
|
let studentEdit = null;
|
||||||
|
|
||||||
|
function renderUi(arrStu) {
|
||||||
|
let tbodyHtml = ``;
|
||||||
|
|
||||||
|
for (let i = 0; i < arrStu.length; i++) {
|
||||||
|
tbodyHtml += `
|
||||||
|
<tr>
|
||||||
|
<td>${arrStu[i].id}</td>
|
||||||
|
<td>${arrStu[i].name}</td>
|
||||||
|
<td>${arrStu[i].email}</td>
|
||||||
|
<td>${arrStu[i].phoneNumber}</td>
|
||||||
|
<td>${arrStu[i].address}</td>
|
||||||
|
<td>${arrStu[i].gender ? "nam" : "nữ"}</td>
|
||||||
|
<td>
|
||||||
|
<button onclick="deleteStu(${arrStu[i].id})">Xóa</button>
|
||||||
|
<button onclick="editLoad(${arrStu[i].id})">Sửa</button>
|
||||||
|
</td>
|
||||||
|
<td></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
`
|
||||||
|
}
|
||||||
|
|
||||||
|
tbodyEL.innerHTML = tbodyHtml
|
||||||
|
|
||||||
|
if (studentEdit) {
|
||||||
|
let formEdit = document.querySelector("form");
|
||||||
|
formEdit.querySelectorAll("input")[0].value = studentEdit.name;
|
||||||
|
formEdit.querySelectorAll("input")[1].value = studentEdit.email;
|
||||||
|
formEdit.querySelectorAll("input")[2].value = studentEdit.phoneNumber;
|
||||||
|
formEdit.querySelectorAll("input")[3].value = studentEdit.address;
|
||||||
|
formEdit.querySelectorAll("input")[studentEdit.gender ? 4 : 5].checked = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
localStorage.setItem("students", JSON.stringify(students))
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function save(e) {
|
||||||
|
e.preventDefault()
|
||||||
|
|
||||||
|
const form = e.target;
|
||||||
|
|
||||||
|
let newStudent = {
|
||||||
|
id: studentEdit ? studentEdit.id : countId++,
|
||||||
|
name: form.name.value,
|
||||||
|
email: form.email.value,
|
||||||
|
phoneNumber: form.phoneNumber.value,
|
||||||
|
address: form.address.value,
|
||||||
|
gender: form.gender.value == "true" ? true : false
|
||||||
|
}
|
||||||
|
|
||||||
|
if (studentEdit) {
|
||||||
|
for (let i = 0; i < students.length; i++) {
|
||||||
|
if (students[i].id == studentEdit.id) {
|
||||||
|
students[i] = newStudent;
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
studentEdit = null;
|
||||||
|
form.reset()
|
||||||
|
} else {
|
||||||
|
students.push(newStudent)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
renderUi(students);
|
||||||
|
}
|
||||||
|
|
||||||
|
function deleteStu(stuId) {
|
||||||
|
for (let i = 0; i < students.length; i++) {
|
||||||
|
if (students[i].id == stuId) {
|
||||||
|
students.splice(i, 1)
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
renderUi(students)
|
||||||
|
}
|
||||||
|
|
||||||
|
function search() {
|
||||||
|
let textSe = se_ipEL.value;
|
||||||
|
|
||||||
|
let kq = [];
|
||||||
|
|
||||||
|
for (let i = 0; i < students.length; i++) {
|
||||||
|
if (students[i].name.includes(textSe)) {
|
||||||
|
kq.push(students[i])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
renderUi(kq)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function sapXep() {
|
||||||
|
renderUi(students.sort((a, b) => a.name.localeCompare(b.name)))
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function editLoad(stuId) {
|
||||||
|
for (let i = 0; i < students.length; i++) {
|
||||||
|
if (students[i].id == stuId) {
|
||||||
|
studentEdit = students[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
renderUi(students)
|
||||||
|
}
|
||||||
|
|
||||||
|
renderUi(students)
|
||||||
Reference in New Issue
Block a user