问题描述
|
我想在循环中添加一个条件,以测试是否按下了向右箭头,以及是否将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;然后在循环内检查