有一个二维数组,可以动态输入,用一行水平表格将该二维数组的行展示出来,各种内的数字为行号,有多少行,就用多少个格子展示出来。下面是一个演示例子 [1,3],[3,0,1],[2],[0] ,生成一行4个格子的表格,当点击0号格子时,1号3号格子变色,当点击1号格子时,3号0号1号格子变色,以此类推,变色持续1秒,用html写出来
时间: 2024-02-23 22:59:36 浏览: 70
动态生成二维数组的做法
好的,我可以帮你写一个简单的 HTML 实现该功能。以下是代码:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>二维数组行展示表格</title>
<style>
table {
border-collapse: collapse;
}
td {
border: 1px solid black;
width: 50px;
height: 50px;
text-align: center;
vertical-align: middle;
cursor: pointer;
}
</style>
</head>
<body>
<table id="myTable">
</table>
<script>
// 定义二维数组
var arr = [[1,3],[3,0,1],[2],[0]];
// 定义表格行数和列数
var numRows = arr.length;
var numCols = 4;
// 根据行数和列数生成表格
var table = document.getElementById("myTable");
for (var i = 0; i < numRows; i++) {
var row = document.createElement("tr");
for (var j = 0; j < numCols; j++) {
var cell = document.createElement("td");
cell.innerText = i;
cell.onclick = function() {
// 获取当前点击的格子的行号
var rowIdx = parseInt(this.innerText);
// 遍历该行的所有格子,改变背景颜色
for (var k = 0; k < arr[rowIdx].length; k++) {
var colIdx = arr[rowIdx][k];
table.rows[colIdx].cells[rowIdx].style.backgroundColor = "yellow";
}
// 1秒后恢复背景颜色
setTimeout(function() {
for (var k = 0; k < arr[rowIdx].length; k++) {
var colIdx = arr[rowIdx][k];
table.rows[colIdx].cells[rowIdx].style.backgroundColor = "";
}
}, 1000);
}
row.appendChild(cell);
}
table.appendChild(row);
}
</script>
</body>
</html>
```
解释一下代码:
首先,我们定义了一个二维数组 `arr`,表示要展示的数据。然后,我们根据数组的行数和列数,生成一个表格,并且给每个格子添加了点击事件。点击事件会根据当前格子的行号,改变该行中对应的格子的背景颜色,并在1秒后恢复原来的背景颜色。这样,就实现了题目要求的功能。
注意,在代码中只是简单地定义了样式和事件处理函数,你可以根据需要进行更改美化。
阅读全文