前端实现js控制css样式
原题里写的是会产生随机数,决定开始的格子是那一个,并且能根据按键来决定移动方向
37 左 38:上 39:右 40:下
以下为简化版的解法
html
<html>
<table id="my_table">
<tr><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td></td><td></td><td></td><td></td><td></td></tr>
</table>
</html>
css
td{
border:1px solid black;
width:50px;
height:50px;
}
.active{
background-color:yellow;
}
js
function bind(){
document.onkeydown=event=>{
if(!event) return;
var code=event.keyCode||' ';
var row=0,col=0;
var row_len=document.getElementById("my_table").rows.length;
var col_len=document.getElementById("my_table").rows[0].cells.length;
if(!{'37':1,'38':1,'39':1,'40':1}[code]) return;
switch(code)
{
case 37:
if(col-1>0){
col--;
}
break;
case 38:
if(row-1>0){
row--;
}
break;
case 39:
if(col+1<col_len){
col++;
}
break;
case 40:
if(row+1<row_len){
row++;
}
break;
}
var obj = document.getElementById("my_table").rows[row].cells[col];
obj.setAttribute("class", "active");
event.preventDefault();
};
}
bind();
具体效果展示在codepan:https://codepen.io/Skyeeee227/pen/ExKdvJJ