我想在循环中添加一个条件,测试是否按下了右箭头,以及它是否向右移动了一个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。
由于
答案 0 :(得分:4)
在这里,您可以使用原始JS进行类似的操作(按预览,然后按住w
):
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)
<div id="char"></div>
<script>
$(document).keydown(function(e){
if(e.keyCode == 39){
//do something
$("#char").animate({'left':'+=10'}, 1);
}
})
</script>
答案 2 :(得分:0)
创建一个标志var pressed;
并在keyPress事件中将其设置为true或false;然后在循环中检查它