如果key在javascript循环中关闭,则返回true?

时间:2011-05-23 21:21:46

标签: javascript jquery

我想在循环中添加一个条件,测试是否按下了右箭头,以及它是否向右移动了一个div。但是我不知道如何检查他们的keydown。

我正在使用代码来执行此操作,但它确实很长,而且我确信有更短的方法可以执行此操作。

这是代码:

    <div id="char"></div>
    <script>
    setInterval(function() {

// here it should check if RIGHT (keycode 39) is down and move char 10px to the right if it is;

    }, 20);
    </script>

如何检查循环内的keydown?顺便说一下,我也在网站上使用jQuery。

由于

3 个答案:

答案 0 :(得分:4)

在这里,您可以使用原始JS进行类似的操作(按预览,然后按住w):

http://jsbin.com/odalo3/edit

var isPressed = false;

var keydown = function(e){ 
  if(e.keyCode == 87){
    isPressed = true;
  }
}
var keyup = function(e){
    isPressed = false;
}

document.addEventListener("keydown",keydown,false);
document.addEventListener("keyup",keyup,false);

setInterval(function(){
  if(isPressed){
    document.getElementById('hello').innerHTML = document.getElementById('hello').innerHTML+', pressed';
  } 
},100)

更新

如果您使用的是jQuery,可以将eventListeners更改为:

$(window).keydown(function(e){
   if(e.keyCode == 87){
     isPressed = true;
   }
})
.keyup(function(e){
  isPressed = false;
})

删除这些行:

var keydown = function(e){ 
  if(e.keyCode == 87){
    isPressed = true;
  }
}
var keyup = function(e){
    isPressed = false;
}

document.addEventListener("keydown",keydown,false);
document.addEventListener("keyup",keyup,false);

但这是一回事。

答案 1 :(得分:2)

使用jQuery and keydown

<div id="char"></div>
<script>
$(document).keydown(function(e){
    if(e.keyCode == 39){
          //do something
        $("#char").animate({'left':'+=10'}, 1);
     }
})
</script>

小提琴:http://jsfiddle.net/maniator/zXeXt/

答案 2 :(得分:0)

创建一个标志var pressed;并在keyPress事件中将其设置为true或false;然后在循环中检查它