javascript的键盘按下事件有哪些?

是这样的 我弄了一个可以用上下左右控制它移动的样式 但是当我一直按着一个方向的时候 它总会移动一个格子然后停顿一下再往那个方向一直走 有没有什么办法把它中间的停顿去掉?

<!DOCTYPE HTML>
<html>
<head>
<meta charset=UTF-8 />
<title>KeyMoveRect</title>
<style type="text/css">
#wrap {
margin: auto;
position: relative;
width: 80%;
}
</style>
<script type="text/javascript">
onload = function ()
    {
    var a = new Array ([
            1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
    ], [
            1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
    ], [
            1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
    ], [
            1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
    ], [
            1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
    ], [
            1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
    ], [
            1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
    ], [
            1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
    ], [
            1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
    ]);
    var randX = Math.floor (Math.random () * a.length), randY = Math.floor (Math.random () * a[randX].length);
    a[randX][randY] = 0;
    for ( var i = 0; i < a.length; i++)
    {
    var array = [];
    for ( var j = 0; j < a[i].length; j++)
    {
    var aa = document.createElement ("div");
    aa.style.position = "absolute";
    aa.style.border = '1px solid black';
    aa.style.width = W + "px";
    aa.style.height = H + "px";
    aa.style.left = j * W + "px";
    aa.style.top = i * H + "px";
    if (a[i][j] == 0)
    {
    aa.style.backgroundColor = '#ff0000';
    X = i;
    Y = j;
    }
    else
    {
    aa.style.backgroundColor = 'green';
    }
    wrap.appendChild (aa);
    array.push (aa);
    }
    SITE.push (array);
    }
    }
    
    var exchange = function (dir)
    {
    var tx = X, ty = Y, d;
    if (dir == 37)
    {
    if (Y < 1)
    {
    return;
    }
    else
    {
    ty--;
    d = 'left';
    }
    }
    else if (dir == 38)
    {
    if (X < 1)
    {
    return;
    }
    else
    {
    tx--;
    d = 'top';
    }
    }
    else if (dir == 39)
    {
    if (Y > SITE[X].length - 2)
    {
    return;
    }
    else
    {
    ty++;
    d = 'left';
    }
    }
    else if (dir == 40)
    {
    if (X > SITE.length - 2)
    {
    return;
    }
    else
    {
    tx++;
    d = 'top';
    }
    }
    var that = SITE[tx][ty];
    var me = SITE[X][Y];
    var sd = that.style[d];
    that.style[d] = me.style[d];
    me.style[d] = sd;
    var tmp = SITE[tx][ty];
    SITE[tx][ty] = SITE[X][Y];
    SITE[X][Y] = tmp;
    X = tx;
    Y = ty;
    }
    
    var W = 50, H = 50, X = -1, Y = -1, SITE = [];
    document.onkeydown = function (e)
    {
    e = e || window.event;
    var keyCode = e.keyCode;
    if (!/^(37|38|39|40)$/.test (keyCode))
    {
    return false;
    }
    exchange (keyCode);
    };
    
    document.ondragstart = document.onselectstart = document.oncontextmenu = function ()
    {
    return false;
    }
</script>
</head>
<body>
<div id="wrap"></div>
</body>
</html>

温馨提示:内容为网友见解,仅供参考
无其他回答

keyup事件是什么
keyup事件是一种JavaScript事件。当用户在键盘上按下某个键并在释放按键时,触发的事件就是keyup事件。这是一个非常重要的交互事件,常用于表单验证、文本编辑等功能中。下面详细介绍keyup事件的相关知识。首先,keyup事件的特点。当用户释放键盘上的键时,会触发浏览器的事件处理机制。这种事件的特点是,...

JavaScript鼠标事件、键盘事件
`onkeypress` 事件只识别标准键盘按键,忽略功能键如箭头键、Shift等。键盘事件的执行顺序遵循:`keydown` -> `keypress` -> `keyup`。以下为键盘事件示例代码:javascript document.getElementById('myElement').addEventListener('keydown', function(event) { console.log('按键按下');});document....

JS事件类型有哪些?分别是什么?
1. 鼠标事件<\/ 当用户的鼠标按下、移动或释放时,这些事件如click、dblclick、mousedown、mouseup、mousemove、mouseover和mouseout会触发,帮助我们捕捉用户的细致操作。2. 键盘事件<\/ 无论是keydown键入、keyup释放,还是keypress按下并释放,都能通过监听这些键盘事件,响应用户的输入和交互。3. 表单事...

JS中keypress和keydown
在JavaScript中,当我们讨论`keypress`和`keydown`这两个事件时,它们的含义并不像字面那样简单。首先,让我们明确它们的区别:`keydown`事件记录的是用户按下键盘的那一刻,它返回的是键盘的原始代码,这个代码包含了所有按键的状态,包括但不限于字符键、功能键等。而`keypress`事件则是在用户按下并...

Javascript常用大学生来看
键盘事件是指用户在使用键盘时触发的事件。例如,用户按(Esc 键关闭打开的状态栏,按[Enter] 键直接完成光标的上下切换等。下面列举几个常用的键盘事件如表15-16所示。表15-16JavaScript中常用的键盘事件 3.表单事件 表单事件是指对Web表单操作时发生的事件。例如,表单提交前对表单的验证,表单重置时的...

javascript中的onkeyup和onkeydown有什么区别?
onkeydown是按下的时候触发的,这个时候键值没有输出来。\\x0d\\x0aonkeyup是按键抬起的时候执行的,这个时候键值已经有了。\\x0d\\x0a和按多长时间没关系,比如你给输入框加这2个事件,\\x0d\\x0a\\x0d\\x0a\\x0d\\x0a\\x0d\\x0a你看看这二个不同的运行结果就明白 了!

JavaScript中的事件都有哪些阿?
onkeydown 当用户按下键盘按键时触发。onkeypress 当用户按下字面键时触发。onkeyup 当用户释放键盘按键时触发。onlayoutcomplete 当打印或打印预览版面处理完成用来自于源文档的内容填充当前 LayoutRect 对象时触发。onload 在浏览器完成对象的装载后立即触发。onlosecapture 当对象失去鼠标捕捉时触发。on...

用js怎么写一个回车键盘事件
一、设计思路:设计一个简单的输入对话框,然后按下enter进行输入事件。二、聊天输入框的代码如下:三、此时的页面展示如下:四:设计函数,使得输入文字时,按下按钮可以提交到聊天框。五、此时在页面上测试,输入一段文字:六、执行结果如下:七、设计函数,使得按下enter跟按钮同样的功能:八、刷新页面...

javascript的事件模型有哪些
onmouseover: 鼠标移进时监听的事件 键盘事件:keydown:键盘按下一个键时的监听事件 keypress: 键盘按(按下并弹起)一个键时的监听事件 keyup: 键盘弹起一个键时的监听事件 HTML事件:load:所有的东西全部被加载后触发的事件 abort:阻止安全装在 error:当页面发生错误时触发的一个事件 select:当文本...

js中keydown键盘事件怎么只触发一次,再点击按键就不触发了?
要实现只在第一次按下按键时触发 keydown 事件,可以使用一个标志变量来记录按键是否已经按下。具体方法如下:```javascript var isKeyPressed = false; \/\/ 定义一个标志变量 document.addEventListener('keydown', function(event) { if (!isKeyPressed) { isKeyPressed = true;\/\/ 在这里添加只...

相似回答