javascript - 为什么 keydown() 会出现此错误?

标签 javascript jquery html event-handling

$(document).ready(function(){
  $("#promptButton").click(function(){
    $("#openPrompt").hide();
    startGame();
  });
});

function startGame(){
  $(document).ready(function(){
$("#gameboard").append("<div class='snakeHead' id='head'> hi </div>");
  var direction;
  moveTimer = setInterval(function() {snakeMove()},1000);
  function snakeMove(){
    function snakeDirection(){
      $(".snakeHead").keydown(function(key){
        if (key.which === 38){
            direction = "up";
            return {"margin-top": "-=20px"}
        } else if(key.which === 40){
            direction = "down"
            return {"margin-top": "+=20px"}
        } else if(key.which === 37){
            direction = "left"
            return {"margin-left": "-=20px"}
        } else if(key.which === 39){
            direction = "right"
            return {"margin-left": "+=20px"}
        } else {
            direction = "right"
            return {"margin-left": "+=20px}"
        };
      });
    };
    $('.snakeHead').animate({'margin-left':'+=20px'}, 'slow');
  }
  });
};

我不断得到

SyntaxError: expected expression, got ')' on line 32 col 11.

我的印象是,只需使用事件触发时调用的函数来调用 keydown() 即可。我需要另一个表达式来调用它吗?

感谢您的帮助,这是我正在尝试的第一个真正的项目,并且是自学的,所以请尽量让我清楚。谢谢!

最佳答案

您有语法错误:

function startGame(){
  $(document).ready(function(){
$("#gameboard").append("<div class='snakeHead' id='head'> hi </div>");
  var direction;
  moveTimer = setInterval(function() {snakeMove()},1000);
  function snakeMove(){
    function snakeDirection(){
      $(".snakeHead").keydown(function(key){
        if (key.which === 38){
            direction = "up";
            return {"margin-top": "-=20px"}
        } else if(key.which === 40){
            direction = "down"
            return {"margin-top": "+=20px"}
        } else if(key.which === 37){
            direction = "left"
            return {"margin-left": "-=20px"}
        } else if(key.which === 39){
            direction = "right"
            return {"margin-left": "+=20px"}
        } else {
            direction = "right"
            return {"margin-left": "+=20px}" <--- Here --->
        };
      });
    };
    $('.snakeHead').animate({'margin-left':'+=20px'}, 'slow');
  }
  });
};

关于javascript - 为什么 keydown() 会出现此错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32543416/

相关文章:

javascript - 为多个按钮添加事件监听器

javascript - Highcharts 柱形图,数据来自 mongodb

javascript - 如何在 react 中使用 getAttribute?

php - 使用 jquery 表单插件使用 2 个变量 echo json_encode

javascript - 通过检查空输入自动完成

javascript - 数组/HTML 中的函数

jquery - 回发后 CSS 样式未重新应用于 jQuery 对话框

javascript - 如何在区域样条类别 Highcharts 中显示从当前日期起一周的最后 7 天

javascript - 单击导航栏元素后如何防止重新加载单页应用程序?

黑莓上的 HTML5 视频标签支持