2011-05-23 92 views
4

我想在循环内添加一个条件,用于测试是否按下右箭头,以及是否将div向右移动一点。但是我不知道如何检查他们的keydown。如果在JavaScript循环中关闭了键盘,返回true?

我正在使用代码来做它,但它确实很长,我确信有一个更短的方法来做到这一点。

这是代码:

<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。

感谢

+1

你使用任何像jQuery或只是原始JS库? – 2011-05-23 21:22:39

+0

我正在使用jQuery。 – lisovaccaro 2011-05-23 21:32:16

+0

类似:http://stackoverflow.com/questions/2445613/how-can-i-check-if-key-is-pressed-during-click-event-with-jquery – spanky 2011-05-23 21:38:06

回答

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/

+0

很酷,谢谢。短和工作 – lisovaccaro 2011-05-23 21:52:34

+0

@ Liso22,随时:-) – Neal 2011-05-23 21:56:17

+0

为什么不只是做'$('body')'? – 2011-05-23 22:05:47

0

创建一个标志var pressed;并将其设置为true或按键事件虚假的;然后检查它的循环

+2

这听起来对我来说很合适。我不知道为什么这是downvoted。我给你一个upvote。 – Zach 2011-05-23 21:31:55

+1

你应该在'keydown'上将它设置为'true'并且在'keyup'上设置为'false'。 – lonesomeday 2011-05-23 21:35:13

+0

@Zach:是的,我也是。 – 2011-05-23 21:37:03

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) 

UPDATE

如果您正在使用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); 

但它是一样的东西。