用js、html以及css实现数据表的展示和操作完整代码
时间: 2023-11-27 13:49:32 浏览: 64
以下是一个简单的使用JS、HTML和CSS实现数据表展示和操作的示例代码:
HTML部分:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Data Table</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<h1>Data Table</h1>
<table id="data-table">
<thead>
<tr>
<th>ID</th>
<th>Name</th>
<th>Age</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>John Doe</td>
<td>25</td>
<td>
<button class="edit-button">Edit</button>
<button class="delete-button">Delete</button>
</td>
</tr>
<tr>
<td>2</td>
<td>Jane Doe</td>
<td>30</td>
<td>
<button class="edit-button">Edit</button>
<button class="delete-button">Delete</button>
</td>
</tr>
<tr>
<td>3</td>
<td>Bob Smith</td>
<td>40</td>
<td>
<button class="edit-button">Edit</button>
<button class="delete-button">Delete</button>
</td>
</tr>
</tbody>
</table>
<div id="add-form-container">
<h2>Add New Record</h2>
<form id="add-form">
<label for="name">Name:</label>
<input type="text" id="name" name="name" required>
<label for="age">Age:</label>
<input type="number" id="age" name="age" required>
<button type="submit" id="submit-button">Add</button>
<button type="button" id="cancel-button">Cancel</button>
</form>
</div>
<div id="overlay"></div>
<script src="script.js"></script>
</body>
</html>
```
CSS部分:
```css
body {
font-family: Arial, sans-serif;
background-color: #f2f2f2;
}
h1 {
text-align: center;
margin-top: 20px;
}
#data-table {
border-collapse: collapse;
width: 80%;
margin: 0 auto;
background-color: #fff;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
}
#data-table th {
background-color: #4CAF50;
color: white;
padding: 10px;
text-align: left;
}
#data-table td {
padding: 10px;
}
#data-table tr:nth-child(even) {
background-color: #f2f2f2;
}
.edit-button, .delete-button {
background-color: #4CAF50;
color: white;
border: none;
padding: 5px 10px;
cursor: pointer;
}
.edit-button:hover, .delete-button:hover {
background-color: #3e8e41;
}
#add-form-container {
display: none;
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
background-color: #fff;
padding: 20px;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
z-index: 2;
}
#add-form-container h2 {
margin-top: 0;
}
#add-form label {
display: block;
margin-bottom: 5px;
}
#add-form input {
margin-bottom: 10px;
padding: 5px;
width: 100%;
box-sizing: border-box;
}
#add-form button {
background-color: #4CAF50;
color: white;
border: none;
padding: 5px 10px;
cursor: pointer;
}
#add-form button[type="submit"] {
margin-right: 10px;
}
#overlay {
display: none;
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, 0.5);
z-index: 1;
}
```
JavaScript部分:
```js
// 获取表格、添加表单及其相关元素
const dataTable = document.getElementById('data-table');
const addFormContainer = document.getElementById('add-form-container');
const addForm = document.getElementById('add-form');
const overlay = document.getElementById('overlay');
const cancelButton = document.getElementById('cancel-button');
// 显示添加表单
function showAddForm() {
addForm.reset();
addFormContainer.style.display = 'block';
overlay.style.display = 'block';
}
// 隐藏添加表单
function hideAddForm() {
addFormContainer.style.display = 'none';
overlay.style.display = 'none';
}
// 提交表单时添加新记录
function addRecord(event) {
event.preventDefault();
const name = document.getElementById('name').value;
const age = document.getElementById('age').value;
const newRow = document.createElement('tr');
newRow.innerHTML = `
<td>${dataTable.rows.length}</td>
<td>${name}</td>
<td>${age}</td>
<td>
<button class="edit-button">Edit</button>
<button class="delete-button">Delete</button>
</td>
`;
dataTable.tBodies[0].appendChild(newRow);
hideAddForm();
}
// 编辑记录时显示编辑表单
function showEditForm(event) {
const row = event.target.closest('tr');
const id = row.cells[0].textContent;
const name = row.cells[1].textContent;
const age = row.cells[2].textContent;
const editForm = document.createElement('form');
editForm.innerHTML = `
<label for="edit-name-${id}">Name:</label>
<input type="text" id="edit-name-${id}" name="name" value="${name}" required>
<label for="edit-age-${id}">Age:</label>
<input type="number" id="edit-age-${id}" name="age" value="${age}" required>
<button type="submit">Save</button>
<button type="button" class="cancel-button">Cancel</button>
`;
row.replaceWith(editForm);
editForm.addEventListener('submit', saveRecord);
editForm.querySelector('.cancel-button').addEventListener('click', cancelEdit);
}
// 保存修改后的记录
function saveRecord(event) {
event.preventDefault();
const form = event.target;
const id = form.closest('tr').cells[0].textContent;
const name = form.querySelector(`#edit-name-${id}`).value;
const age = form.querySelector(`#edit-age-${id}`).value;
const newRow = document.createElement('tr');
newRow.innerHTML = `
<td>${id}</td>
<td>${name}</td>
<td>${age}</td>
<td>
<button class="edit-button">Edit</button>
<button class="delete-button">Delete</button>
</td>
`;
form.replaceWith(newRow);
newRow.querySelector('.edit-button').addEventListener('click', showEditForm);
newRow.querySelector('.delete-button').addEventListener('click', deleteRecord);
}
// 取消编辑记录
function cancelEdit(event) {
const form = event.target.closest('form');
const id = form.closest('tr').cells[0].textContent;
const name = form.querySelector(`#edit-name-${id}`).value;
const age = form.querySelector(`#edit-age-${id}`).value;
const newRow = document.createElement('tr');
newRow.innerHTML = `
<td>${id}</td>
<td>${name}</td>
<td>${age}</td>
<td>
<button class="edit-button">Edit</button>
<button class="delete-button">Delete</button>
</td>
`;
form.replaceWith(newRow);
newRow.querySelector('.edit-button').addEventListener('click', showEditForm);
newRow.querySelector('.delete-button').addEventListener('click', deleteRecord);
}
// 删除记录
function deleteRecord(event) {
const row = event.target.closest('tr');
row.remove();
}
// 添加事件监听器
document.getElementById('add-button').addEventListener('click', showAddForm);
cancelButton.addEventListener('click', hideAddForm);
addForm.addEventListener('submit', addRecord);
dataTable.querySelectorAll('.edit-button').forEach(button => button.addEventListener('click', showEditForm));
dataTable.querySelectorAll('.delete-button').forEach(button => button.addEventListener('click', deleteRecord));
```