js控制html上下左右键选择td问题,代码如下,左键和上键之前,但是下键和右键总是跑到最下面货最后面

<html><head><title>设计家园http://www.dwww.cn</title><metahttp-equiv="Content-Type"conten... <html>
<head>
<title>设计家园 http://www.dwww.cn</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<script language="javascript">
var cols=4;
var obj;
var CanMove=false;
var key;
function setobj(input){
obj=input;
}

function init(){
document.onkeydown=keyDown;
document.onkeyup=keyUp;
}

function keyDown(DnEvents){
var key=window.event.keyCode;
if(key==116){
window.event.keyCode=0;
return false;
}
if(key==8){
if(event.srcElement.tagName!="INPUT"){
event.cancelBubble = true;
event.returnValue = false;
return false;
}
}

for(var i=0;i<document.forms[0].elements.length;i++){
if(document.forms[0].elements[i]==obj){
if (key == 37){//←
if(i>0){
document.forms[0].elements[i-1].focus();
}
}
if (key == 38){//↑
if(i>cols-1){
document.forms[0].elements[i-cols].focus();
}
}
if (key == 39){//→
if(i<document.forms[0].elements.length-1){
document.forms[0].elements[i+1].focus();
}
}

if (key == 13)
{//→
event.keyCode = 9;
}
if (key == 40){//↓
if(i<document.forms[0].elements.length-cols){
document.forms[0].elements[i+cols].focus();
}
}
}
}

}

function keyUp(UpEvents){
return false;
}
</script>
</head>

<body bgcolor="#FFFFFF" text="#000000" onload="init()">
<form action=http://dwww.cn>
<table border="0" cellspacing="0" cellpadding="0" align="center">
<tr>
<td>
<input type="text" name="textfield0" onfocus="setobj(this)">
</td>
<td>
<input type="text" name="textfield1" onfocus="setobj(this)">
</td>
<td>
<input type="text" name="textfield2" onfocus="setobj(this)">
</td>
<td>
<input type="text" name="textfield3" onfocus="setobj(this)">
</td>
</tr>
<tr>
<td>
<input type="text" name="textfield4" onfocus="setobj(this)">
</td>
<td>
<input type="text" name="textfield5" onfocus="setobj(this)">
</td>
<td>
<input type="text" name="textfield6" onfocus="setobj(this)">
</td>
<td>
<input type="text" name="textfield7" onfocus="setobj(this)">
</td>
</tr>
<tr>
<td>
<input type="text" name="textfield8" onfocus="setobj(this)">
</td>
<td>
<input type="text" name="textfield9" onfocus="setobj(this)">
</td>
<td>
<input type="text" name="textfield10" onfocus="setobj(this)">
</td>
<td>
<input type="text" name="textfield11" onfocus="setobj(this)">
</td>
</tr>
<tr>
<td>
<input type="text" name="textfield12" onfocus="setobj(this)">
</td>
<td>
<input type="text" name="textfield613" onfocus="setobj(this)">
</td>
<td>
<input type="text" name="textfield14" onfocus="setobj(this)">
</td>
<td>
<input type="text" name="textfield15" onfocus="setobj(this)">
</td>
</tr>

</table>
</form>

</body>
</html>
展开
 我来答
百度网友dc424fd
推荐于2016-01-24 · 超过54用户采纳过TA的回答
知道小有建树答主
回答量:153
采纳率:0%
帮助的人:119万
展开全部
你这个写的好复杂,给你个思路,你要做的是16个input4x4矩阵分布,那么利用2维数组,input的id(你的代码里有name,但是加上id更便于控制)设置为id="t[row][col]",然后代码就简单了,onkeypress的时候,先判断出是上下左右哪个按键,如果是上,则row-1,col不变,如果是左,则row不变col-1。下和右与上、左对应。计算出目标的row、col之后,只要document.getElementById("t"+row+col).focus()就可以了。当然,你要自行盘断下row和col的取值范围,保证不会超界
更多追问追答
追问
可以给个具体实例么?
可以给个具体实例么?
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式