如果键在javascript循环中按下,则返回true?

问题描述

| 我想在循环中添加一个条件,以测试是否按下了向右箭头,以及是否将div向右移动一点。但是我不知道如何检查他们的按键。 我正在使用代码来执行此操作,但是它确实很长,而且我敢肯定有一种较短的方法可以执行此操作。 这是代码
    <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。 谢谢     

解决方法

使用jQuery和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/     ,在原始JS中,您可以执行以下操作(按Preview,然后按住hold2ѭ): 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\",false);
但这是同一回事。     ,创建一个标记
var pressed;
并在keyPress事件中将其设置为true或false;然后在循环内检查