html 从一个多维数组中循环读取每一维显示成一行,每一行构建一个行的数据勾选项,构建2个按钮,点击增加按钮,增加一行空数据,点击删除按钮,删除已经勾选的行的数据
时间: 2024-10-04 08:00:33 浏览: 34
HTML 可以结合 JavaScript 来实现这样的功能,你可以使用 `for` 循环遍历多维数组,并通过模板字符串构建表格行。每行包括一个复选框、两个按钮(一个增加和一个删除)。这里是一个简单的示例:
```html
<!DOCTYPE html>
<html lang="zh">
<head>
<title>多维数组动态表</title>
</head>
<body>
<table id="dynamicTable">
<!-- 表格初始结构 -->
<tr id="templateRow" style="display:none;">
<td><input type="checkbox" class="itemCheckbox"></td>
<td></td>
<td><button onclick="addRow()">增加</button></td>
<td><button onclick="deleteRow(this)">删除</button></td>
</tr>
</table>
<script>
let data = [/* 你的多维数组 */];
let currentIndex = 0;
function displayData() {
for (let i = 0; i < data[currentIndex].length; i++) {
const newRow = document.getElementById('templateRow').cloneNode(true);
newRow.style.display = '';
newRow.querySelector('.itemCheckbox').value = i;
newRow.firstChild.innerHTML = data[currentIndex][i]; // 填充数据到第一列
newRow.querySelectorAll('button')[0].innerText = "增加"; // 初始化增加按钮文本
if (currentIndex > 0) {
newRow.querySelectorAll('button')[1].addEventListener('click', () => {
deleteCheckedRow(i);
});
}
document.getElementById('dynamicTable').appendChild(newRow);
}
}
function addRow() {
if (currentIndex < data.length - 1) {
currentIndex++;
displayData();
} else {
alert("已达到最大行数");
}
}
function deleteRow(button) {
const row = button.parentNode;
const checkbox = row.querySelector('.itemCheckbox');
if (checkbox.checked) {
data.splice(currentIndex, 1); // 删除数组对应项
currentIndex--; // 更新索引
row.remove(); // 删除表格行
}
}
// 初始展示数据
displayData();
// 如果有更多数据源,请在此处添加更新函数
</script>
</body>
</html>
```
在这个例子中,你需要替换 `data` 为你的实际多维数组,并根据需求修改增加和删除操作。
阅读全文