如何解决if语句

时间:2020-06-16 07:53:38

标签: javascript if-statement

我有一个要在按两个键时沿对角线移动的对象。到目前为止,它仍然有效,但是松开两个键之后,如果我只按一个键(即“ s”),它就会一直沿对角线移动。同时按下两个键如何才能使对象仅沿对角线移动?

let keysPressed = ["d", "s"];
const box1 = document.getElementById("box1");
var box1x = box1.offsetLeft;
var box1y = box1.offsetHeight;

document.addEventListener('keydown', (event) => {
keysPressed[event.key] = true;
if (keysPressed['d'] && event.key == 's') {
   box1.style.left = document.getElementById("box1").offsetLeft + 5 + 'px';
   box1.style.top = document.getElementById("box1").offsetTop + 5 + 'px';
} 
});

2 个答案:

答案 0 :(得分:1)

您应该为按键事件添加处理。现在,永远不会清除keyPressed的值。

答案 1 :(得分:0)

第一次按下后,keysPressed仍保留上一个键的值true。因此,此后,条件keysPressed['d']始终为true,这会导致您当前遇到问题。

您应该在回调函数的末尾将其更新为false。

keysPressed[event.key] = true;
// ....
keysPressed[event.key] = false;