提供一个思路,具体请实现一下。//对每一个td设定id,把键盘事件加到onclick事件中去
function addEvent()
{
var objList = new Array(1,2,3,4,5,.....30);
for(i=0;i++;i<objList.length)
{
var obj= objList[i];
obj.attachEvent("onclick","KeyOnclick");
}
}//这儿写键盘事件的功能
function KeyOnclick()
{
//function.....
}
}//html
//定义每一个对象
<table>
<tr><td id=1>1</td>....</tr>
<tr><td id=11>11</td>....</tr>
<tr><td id=21>21</td>....</tr>
</table>
function addEvent()
{
var objList = new Array(1,2,3,4,5,.....30);
for(i=0;i++;i<objList.length)
{
var obj= objList[i];
obj.attachEvent("onclick","KeyOnclick");
}
}//这儿写键盘事件的功能
function KeyOnclick()
{
//function.....
}
}//html
//定义每一个对象
<table>
<tr><td id=1>1</td>....</tr>
<tr><td id=11>11</td>....</tr>
<tr><td id=21>21</td>....</tr>
</table>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title></title>
</head><body>
<table border="1" cellpadding="0" cellspacing="2" bordercolor="#000000" id="table1">
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>5</td>
<td>6</td>
<td>7</td>
<td>8</td>
<td>9</td>
<td>10</td>
</tr>
<tr>
<td>11</td>
<td>12</td>
<td>13</td>
<td>14</td>
<td>15</td>
<td>16</td>
<td>17</td>
<td>18</td>
<td>19</td>
<td>20</td>
</tr>
<tr>
<td>21</td>
<td>22</td>
<td>23</td>
<td>24</td>
<td>25</td>
<td>26</td>
<td>27</td>
<td>28</td>
<td>29</td>
<td>30</td>
</tr>
</table>
<table border="1" cellpadding="0" cellspacing="2" bordercolor="#000000">
<tr>
<td width="20" height="20" bordercolor="#999999" bgcolor="#FF0000"> </td>
<td width="20" align="center" bordercolor="#999999" id="sred">0</td>
</tr>
<tr>
<td height="20" bordercolor="#999999" bgcolor="#FFFF00"> </td>
<td align="center" bordercolor="#999999" id="syellow">0</td>
</tr>
<tr>
<td height="20" bordercolor="#999999" bgcolor="#0000FF"> </td>
<td align="center" bordercolor="#999999" id="sblue">0</td>
</tr>
</table>
</body>
</html>
<script language="javascript">
var boxs = new Array();
var focusarray = 0;
var focusedtd = null;
var cred = 0;
var cyellow = 0;
var cblue = 0;
var ored = document.getElementById("sred");
var oyellow = document.getElementById("syellow");
var oblue = document.getElementById("sblue");function document.onkeypress()
{
switch(window.event.keyCode)
{
case 45:
arrmove(-1);break;
case 43:
case 13:
arrmove(1);break;
case 47:
if(confirm("重置全部?"))
for(var i=0;i<boxs.length;i++)
changeColor(i,0);
break;
case 42:
changeColor(focusarray,0);break;
case 49:
changeColor(focusarray,1);break;
case 50:
changeColor(focusarray,2);break;
case 51:
changeColor(focusarray,3);break;
default:
break;
}
}function changeColor(index,icolor)
{
switch(boxs[index].scolor)
{
case 1: cred--;break;
case 2: cyellow--;break;
case 3: cblue--;break;
}
switch(icolor)
{
case 0: scolor = "";break;
case 1: scolor = "#FF0000";cred++;break;
case 2: scolor = "#FFFF00";cyellow++;break;
case 3: scolor = "#0000FF";cblue++;break;
}
boxs[index].scolor = icolor;
boxs[index].bgColor = scolor;
ored.innerText = cred;
oyellow.innerText = cyellow;
oblue.innerText = cblue;
}function arrmove(num)
{
boxs[focusarray].borderColor = "#999999";
focusarray+=num;
if(focusarray<0)focusarray+=30;
if(focusarray>29)focusarray-=30;
boxs[focusarray].borderColor = "#FF0000";
}function window.onload()
{
var tablebox = document.getElementById("table1");
for(var i=0;i<tablebox.cells.length;i++)
{
var tempobj = tablebox.cells[i];
tempobj.onclick = function(){arrmove(this.boxindex-focusarray);}
tempobj.style.cursor = "hand";
tempobj.align = "center";
tempobj.borderColor = "#999999";
tempobj.setAttribute("boxindex",i);
tempobj.setAttribute("scolor",0);
boxs.push(tempobj);
}
tdfocus(boxs[0]);
focusarray = 0;
ored.innerText = 0;
oyellow.innerText = 0;
oblue.innerText = 0;
}
</script>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title></title>
</head><body>
<table border="1" cellpadding="0" cellspacing="2" bordercolor="#000000" id="table1">
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
<td>5</td>
<td>6</td>
<td>7</td>
<td>8</td>
<td>9</td>
<td>10</td>
</tr>
<tr>
<td>11</td>
<td>12</td>
<td>13</td>
<td>14</td>
<td>15</td>
<td>16</td>
<td>17</td>
<td>18</td>
<td>19</td>
<td>20</td>
</tr>
<tr>
<td>21</td>
<td>22</td>
<td>23</td>
<td>24</td>
<td>25</td>
<td>26</td>
<td>27</td>
<td>28</td>
<td>29</td>
<td>30</td>
</tr>
</table>
<table border="1" cellpadding="0" cellspacing="2" bordercolor="#000000">
<tr>
<td width="20" height="20" bordercolor="#999999" bgcolor="#FF0000"> </td>
<td width="20" align="center" bordercolor="#999999" id="sred">0</td>
</tr>
<tr>
<td height="20" bordercolor="#999999" bgcolor="#FFFF00"> </td>
<td align="center" bordercolor="#999999" id="syellow">0</td>
</tr>
<tr>
<td height="20" bordercolor="#999999" bgcolor="#0000FF"> </td>
<td align="center" bordercolor="#999999" id="sblue">0</td>
</tr>
</table>
</body>
</html>
<script language="javascript">
var boxs = new Array();
var focusarray = 0;
var focusedtd = null;
var cred = 0;
var cyellow = 0;
var cblue = 0;
var ored = document.getElementById("sred");
var oyellow = document.getElementById("syellow");
var oblue = document.getElementById("sblue");function document.onkeypress()
{
switch(window.event.keyCode)
{
case 45:
arrmove(-1);break;
case 43:
case 13:
arrmove(1);break;
case 47:
if(confirm("重置全部?"))
for(var i=0;i<boxs.length;i++)
changeColor(i,0);
break;
case 42:
changeColor(focusarray,0);break;
case 49:
changeColor(focusarray,1);break;
case 50:
changeColor(focusarray,2);break;
case 51:
changeColor(focusarray,3);break;
default:
break;
}
}function changeColor(index,icolor)
{
switch(boxs[index].scolor)
{
case 1: cred--;break;
case 2: cyellow--;break;
case 3: cblue--;break;
}
switch(icolor)
{
case 0: scolor = "";break;
case 1: scolor = "#FF0000";cred++;break;
case 2: scolor = "#FFFF00";cyellow++;break;
case 3: scolor = "#0000FF";cblue++;break;
}
boxs[index].scolor = icolor;
boxs[index].bgColor = scolor;
ored.innerText = cred;
oyellow.innerText = cyellow;
oblue.innerText = cblue;
}function arrmove(num)
{
boxs[focusarray].borderColor = "#999999";
focusarray+=num;
if(focusarray<0)focusarray+=30;
if(focusarray>29)focusarray-=30;
boxs[focusarray].borderColor = "#FF0000";
}function window.onload()
{
var tablebox = document.getElementById("table1");
for(var i=0;i<tablebox.cells.length;i++)
{
var tempobj = tablebox.cells[i];
tempobj.onclick = function(){arrmove(this.boxindex-focusarray);}
tempobj.style.cursor = "hand";
tempobj.align = "center";
tempobj.width = 20;
tempobj.height = 20;
tempobj.borderColor = "#999999";
tempobj.setAttribute("boxindex",i);
tempobj.setAttribute("scolor",0);
boxs.push(tempobj);
}
focusarray = 0;
arrmove(0);
ored.innerText = 0;
oyellow.innerText = 0;
oblue.innerText = 0;
}
</script>
var boxs = new Array(); //元素缓存
var focusarray = 0; //指针
//数量
var cred = 0;
var cyellow = 0;
var cblue = 0;
//数量显示容器
var ored = document.getElementById("sred");
var oyellow = document.getElementById("syellow");
var oblue = document.getElementById("sblue");//按键事件
function document.onkeypress()
{
switch(window.event.keyCode)
{
case 45:
arrmove(-1);break; //"-"
case 43:
case 13: //"+" 和 Enter
arrmove(1);break;
case 47: //"/"
if(confirm("重置全部?"))
for(var i=0;i<boxs.length;i++)
changeColor(i,0);
break;
case 42://"*"
changeColor(focusarray,0);break;
case 49://"1"
changeColor(focusarray,1);break;
case 50://"2"
changeColor(focusarray,2);break;
case 51://"3"
changeColor(focusarray,3);break;
default:
break;
}
}
//方法:改变当前元素的颜色
function changeColor(index,icolor)
{
//当前元素原颜色数量减1
switch(boxs[index].scolor)
{
case 1: cred--;break;
case 2: cyellow--;break;
case 3: cblue--;break;
}
//新颜色数量加1 并获取新颜色
switch(icolor)
{
case 0: scolor = "";break;
case 1: scolor = "#FF0000";cred++;break;
case 2: scolor = "#FFFF00";cyellow++;break;
case 3: scolor = "#0000FF";cblue++;break;
}
boxs[index].scolor = icolor;//记录颜色标记
boxs[index].bgColor = scolor;//改变颜色
//显示颜色计数
ored.innerText = cred;
oyellow.innerText = cyellow;
oblue.innerText = cblue;
}
//方法 指针移动
function arrmove(num)
{
boxs[focusarray].borderColor = "#999999";//改变前指针所指元素的边框颜色
focusarray+=num;//改变指针
//防止溢出
if(focusarray<0)focusarray+=30;
if(focusarray>29)focusarray-=30;
boxs[focusarray].borderColor = "#FF0000";//改变当前指针所指元素的边框颜色
}function window.onload()
{
var tablebox = document.getElementById("table1");
for(var i=0;i<tablebox.cells.length;i++)
{
var tempobj = tablebox.cells[i];
tempobj.onclick = function(){arrmove(this.boxindex-focusarray);}//添加鼠标单击时事件
tempobj.style.cursor = "hand";//鼠标指针
tempobj.align = "center";//对齐
tempobj.width = 20;//宽
tempobj.height = 20;//高
tempobj.borderColor = "#999999";//边框颜色
tempobj.setAttribute("boxindex",i);//位置标记
tempobj.setAttribute("scolor",0);//颜色标记
boxs.push(tempobj);//加入缓存
}
focusarray = 0;//指针归零
arrmove(0);//触发方法
//显示颜色计数归零
ored.innerText = 0;
oyellow.innerText = 0;
oblue.innerText = 0;
}
</script>