我编写了以下代码,以使每次我按键盘上的向左箭头键时都将标识为“玩家”的框向左旋转一个角度。我尝试通过声明一个名为“ numberD”的变量并将其设置为0来设置度的初始值。声明。然后,我尝试将numberD的值插入到其后面的语句中,方法是将其插入旋转度语句中。

我没有收到任何语法错误,但是该框没有移动,我知道按键的工作原理是因为我附加了控制台日志,每次按下左键时都会触发。我认为我的问题是,当我声明numberD时,它不知道将其连接CSS元素播放器的transform属性。
任何想法将不胜感激。谢谢!

另外,此示例为CODEPEN LINK

<!DOCTYPE html>
<html>
<head>
<style>
body {
    background-color: #1f1f2e;
    margin: 0px;
    padding: 0px;
}
#arena {
    background-color:black;
    margin: 0px;
    padding: 0px;
    width: 500px;
    height: 500px;
}
#player {
    background-color: white;
    width: 10px;
    height: 10px;
    position: relative;
    top:50%;
    left:50%;
    transform:rotate(0deg);
}
</style>
<script>
document.addEventListener("keydown", keyBoardInput);

function keyBoardInput() {
    var i = event.keyCode;
    if (i == 37) {
      numberD = 0;
      numberD ++;
      document.getElementById('player').style.transform = "rotate(" +
      numberD +"deg)";

    console.log('fired');
    }
}
</script>
<body>
<div id="arena">
    <div id="player"></div>
</div>
</body>

</head>
</html>

最佳答案

每次调用该函数时,都要重置旋转值:numberD = 0;
要解决此问题,您必须在函数外部声明变量。您可以通过将其定义为文档范围的变量来做到这一点:document.numberD = 0;

这是代码:

document.addEventListener("keydown", keyBoardInput);
document.numberD = 0;

    function keyBoardInput() {
    var i = event.keyCode;

    if (i == 37) {

      document.numberD++;
        document.getElementById('player').style.transform = "rotate(" + document.numberD + "deg)";
        console.log('fired');
      }
    }


这是一个working example.

10-04 21:48