写这个小栗子主要是因为在JS复习过程中,发现了一个事件对象的用法,即事件对象的target,在对多个对象进行相同的事件触发时可以用到。
该例子是一个4*4的表格,鼠标点击到哪部分就可以随机生成1个颜色填充小格子。
截图如下:
代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>JS Test</title>
<style>
td {
150px;
height: 100px;
font-size: 0.8rem;
font-family: 'consoloas';
color: white;
text-align: center;
}
table {
border-collapse: collapse;
margin: 0 auto;
box-shadow: rgb(168, 168, 168) 0 0 1rem;
}
table caption {
font-size: 1.2rem;
font-family: 'Segoe UI', '宋体';
line-height: 5rem;
}
</style>
</head>
<body>
<table>
<caption>4 x 4 调色板</caption>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</table>
</body>
<script>
function random(number) {
return Math.floor(Math.random() * number + 1);
}
function bgChange(e) {
const rndCol = 'rgb(' + random(255) + ',' + random(255) + ',' + random(255) + ')';
e.target.style.backgroundColor = rndCol;
e.target.textContent = rndCol;
}
var btns = document.querySelectorAll('td');
for (let i = 0; i < btns.length; i++) {
btns[i].onclick = bgChange;
}
</script>
</html>
random函数用来生成随机数,bgChange用来修改事件目标的css样式。