这 HTML 运行 不应该正确吗?

Shouldn't this HTML run correctly?

我用 editor.cloxy.net 编写了这个程序(更多关于我的个人资料中的网站),但我清理了它以使其更易于阅读。我对 HTML/CSS/JavaScript 感兴趣大约一年了,但是制作一个简单的程序仍然很困难。我最近了解了关键代码并在下面制作了脚本,但是它不起作用所以我注册了一个帐户并提出了问题。该代码没有 return 错误,但它没有按照我的预期进行:当玩家按下左键时向左移动,当玩家按下右键时向右移动,等等。这是代码:

<!DOCTYPE html>
<html>
<head>
    <title>A test</title>
    <style>
         #a {
           position: absolute;
         }
    </style>
</head>
<body>
    <button id="a">thing</button> 
    <script>
     var x = a.style.left
     var y = a.style.top
     document.onkeydown = function(e) {
         switch (e.keyCode) {
             case 37: //left
                 x -= 10
                 a.style.left = x + "px";
                 break;
             case 38: //up
                 y -= 10
                 a.style.top = y + "px";
                 break;
             case 39: //right
                 x += 10
                 a.style.left = x + "px";
                 break;
             case 40: //down
                 y += 10
                 a.style.top = y + "px";
                 break;
         }
       };
    </script>
</body>
</html>

我希望得到一个有用的答案,就像我在其他问题上看到的那样。请尝试并提供帮助:)

您需要正确 parse/初始化您的 xy 值:

var x = parseInt(a.style.left) || 0;
var y = parseInt(a.style.top) || 0;

document.onkeydown = function(e) {
  switch (e.keyCode) {
    case 37: //left
      x -= 10
      a.style.left = x + "px";
      break;
    case 38: //up
      y -= 10
      a.style.top = y + "px";
      break;
    case 39: //right
      x += 10
      a.style.left = x + "px";
      break;
    case 40: //down
      y += 10
      a.style.top = y + "px";
      break;
  }
};
#a {
  position: absolute;
}
<button id="a">thing</button>

var x = a.style.left
var y = a.style.top

在这里你的变量 x 和 y 是字符串类型(数字字符串)。要将数字字符串转换为数字,我们必须使用 parseInt() 函数。

我希望你现在清楚了:)