它不会增加位置

时间:2019-05-30 16:29:01

标签: javascript css events

我有以下代码,我想按我的按下箭头(在这种情况下为向左箭头)移动一个框,但仅向left属性添加一次。如果我多次按左箭头,则它将保留在同一位置。不知道为什么。

const box = document.querySelector('div');
const body = document.querySelector('body');

body.addEventListener('keydown', move);

function move(event) {
    let ddd = event.which || event.keyCode;
    let left = 0;
    box.style.position = 'absolute';
    if(ddd === 37) {
        left += 5;
        box.style.left = left + 'px';
    }
}

1 个答案:

答案 0 :(得分:2)

那是因为您每次都要重置left的值。将left存储在move之外,以防止重置。

const box = document.querySelector('div');
const body = document.querySelector('body');
let left = 0;

body.addEventListener('keydown', move);

function move(event) {
    let ddd = event.which || event.keyCode;
    box.style.position = 'absolute';
    if(ddd === 37) {
        left += 5;
        box.style.left = left + 'px';
    }
}