用js和html和css实现数据表的展示和操作
时间: 2023-11-27 16:50:17 浏览: 48
好的,以下是一个简单的例子,使用HTML、CSS和JavaScript实现表格的展示和基本的编辑操作:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>数据表展示和操作</title>
<style>
table {
border-collapse: collapse;
width: 100%;
}
th, td {
padding: 8px;
text-align: left;
border-bottom: 1px solid #ddd;
}
th {
background-color: #f2f2f2;
}
.edit-btn {
background-color: #4CAF50;
color: white;
border: none;
padding: 8px 16px;
text-align: center;
text-decoration: none;
display: inline-block;
font-size: 14px;
margin: 4px 2px;
cursor: pointer;
}
.save-btn, .cancel-btn {
background-color: #008CBA;
}
.cancel-btn {
background-color: #f44336;
}
.hidden {
display: none;
}
</style>
</head>
<body>
<table id="myTable">
<thead>
<tr>
<th>ID</th>
<th>名称</th>
<th>价格</th>
<th>库存</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>商品A</td>
<td>100</td>
<td>50</td>
<td>
<button class="edit-btn" onclick="editRow(this)">编辑</button>
<button class="hidden save-btn" onclick="saveRow(this)">保存</button>
<button class="hidden cancel-btn" onclick="cancelEdit(this)">取消</button>
</td>
</tr>
<tr>
<td>2</td>
<td>商品B</td>
<td>200</td>
<td>30</td>
<td>
<button class="edit-btn" onclick="editRow(this)">编辑</button>
<button class="hidden save-btn" onclick="saveRow(this)">保存</button>
<button class="hidden cancel-btn" onclick="cancelEdit(this)">取消</button>
</td>
</tr>
<tr>
<td>3</td>
<td>商品C</td>
<td>300</td>
<td>20</td>
<td>
<button class="edit-btn" onclick="editRow(this)">编辑</button>
<button class="hidden save-btn" onclick="saveRow(this)">保存</button>
<button class="hidden cancel-btn" onclick="cancelEdit(this)">取消</button>
</td>
</tr>
</tbody>
</table>
<script>
function editRow(btn) {
const row = btn.parentNode.parentNode;
const cells = row.getElementsByTagName("td");
for (let i = 1; i < cells.length - 1; i++) {
const cell = cells[i];
const value = cell.innerText;
cell.innerHTML = `<input type="text" value="${value}">`;
}
btn.classList.add("hidden");
row.querySelector(".save-btn").classList.remove("hidden");
row.querySelector(".cancel-btn").classList.remove("hidden");
}
function saveRow(btn) {
const row = btn.parentNode.parentNode;
const cells = row.getElementsByTagName("td");
for (let i = 1; i < cells.length - 1; i++) {
const cell = cells[i];
const input = cell.getElementsByTagName("input")[0];
const value = input.value.trim();
cell.innerText = value;
}
btn.classList.add("hidden");
row.querySelector(".cancel-btn").classList.add("hidden");
row.querySelector(".edit-btn").classList.remove("hidden");
}
function cancelEdit(btn) {
const row = btn.parentNode.parentNode;
const cells = row.getElementsByTagName("td");
for (let i = 1; i < cells.length - 1; i++) {
const cell = cells[i];
const input = cell.getElementsByTagName("input")[0];
const value = input.value.trim();
cell.innerText = value;
}
btn.classList.add("hidden");
row.querySelector(".save-btn").classList.add("hidden");
row.querySelector(".edit-btn").classList.remove("hidden");
}
</script>
</body>
</html>
```
这个例子展示了一个简单的商品列表,包含ID、名称、价格和库存四个字段,每行数据后面有“编辑”、“保存”和“取消”三个操作按钮。当用户点击“编辑”按钮时,当前行的数据会变为可编辑状态,用户可以修改其中的任意字段,之后点击“保存”按钮可以保存修改后的数据,点击“取消”按钮则可以放弃修改并还原为原始数据。
这个例子中主要使用了HTML的`table`元素来展示数据表,CSS样式来美化表格,并且使用JavaScript来实现编辑、保存和取消操作的逻辑。具体来说,定义了三个函数`editRow`、`saveRow`和`cancelEdit`,分别对应“编辑”、“保存”和“取消”按钮的点击事件处理。在`editRow`函数中,将当前行的每个单元格中的文本内容替换为对应的输入框,同时隐藏“编辑”按钮并显示“保存”和“取消”按钮;在`saveRow`函数中,将修改后的数据保存到每个单元格中并还原按钮状态;在`cancelEdit`函数中,放弃修改并还原为原始数据,并还原按钮状态。