Javascript 如何仅在按下键时更改值?
我试着做一个代码,当我按下箭头键时球只移动,当我放开时球停止,但它继续移动。我怎样才能解决这个问题 这是我编写的代码的一部分:Javascript 如何仅在按下键时更改值?,javascript,for-loop,while-loop,keypress,Javascript,For Loop,While Loop,Keypress,我试着做一个代码,当我按下箭头键时球只移动,当我放开时球停止,但它继续移动。我怎样才能解决这个问题 这是我编写的代码的一部分: document.onkeydown = function tast (e) { if (e.keyCode == 39) { // høyre høyre = 1; } else { høyre = 0; console.log("ikke høyre") } if (e.keyCo
document.onkeydown = function tast (e) {
if (e.keyCode == 39) { // høyre
høyre = 1;
} else {
høyre = 0;
console.log("ikke høyre")
}
if (e.keyCode == 37) { // venstre
venstre = 1;
} else {
venstre = 0;
}
if (e.keyCode == 38) { // opp
opp = 1;
} else {
opp = 0;
}
if (e.keyCode == 40) { // ned
ned = 1;
} else {
ned = 0;
}
}
if (venstre == 1){
kuler[0].x -= 4;
}
if (høyre == 1){
kuler[0].x += 4;;
}
if (opp == 1){
kuler[0].y -= 4;
}
if (ned == 1){
kuler[0].y += 4;
}
然后在
else
上将值设置为0
。使用onkeyup
事件处理程序。然后按键将值设置为1
。和onkeyup
将它们设置为0
:
document.onkeydown = function tast (e) {
if (e.keyCode == 39) høyre = 1;
if (e.keyCode == 37) venstre = 1;
if (e.keyCode == 38) opp = 1;
if (e.keyCode == 40) ned = 1;
}
document.onkeyup = function tast2 (e) {
if (e.keyCode == 39) høyre = 0;
if (e.keyCode == 37) venstre = 0;
if (e.keyCode == 38) opp = 0;
if (e.keyCode == 40) ned = 0;
}
你好像忘了考虑一下onkeyup。我只想让它在按键按下时移动。设置它在按键按下时移动。当钥匙打开时,让它停止移动。。。。我认为下面的答案给出了一个很好的例子。Keyup可能只需将所有变量设置为0。@Barmar一次可以按多个键。例如,我可以按住左键和上键,当我向上释放并按住左键时,我不应该停止,而是向左走。这就是为什么不想将它们全部设置为0。