javascript - 函数开始一遍又一遍地重复

标签 javascript jquery function events

我一直在开发一个简单的系统,当您按下按钮时,它应该在两个不同的场景之间切换。

gameOne();

var game = 1;

function gameOne() {
  game = 1;
  console.log("Game 1");
  $( "body" ).keyup(function( event ) {
        if ( event.which == 49 && game == 1) { // Number 1 key
           gameTwo(); 
        }
  });
}

function gameTwo() {
  game = 2;
  console.log("Game 2");
  $( "body" ).keyup(function( event ) {
    if ( event.which == 49 && game == 2) { // Number 1 key
        gameOne();
    } 
  });
}

预期行为 - 我希望在按 1 键后显示游戏 1,然后在再次按 1 键后显示游戏 2,然后在按 1 时重复此操作。

实际行为 - 它执行了几次预期的行为,然后开始一遍又一遍地重复 1 和 2,直到它滞后于浏览器。

JSFiddle:https://jsfiddle.net/a0npotm8/10/

如果这是一个基本问题或其他问题,我真的很抱歉,我对 Javascript 和 JQuery 还很陌生,目前这确实让我感到困惑。

感谢所有帮助。 谢谢:)

最佳答案

这里的问题是,您在 keyup 回调中递归地重新绑定(bind) keyup 事件,因此最终会破坏浏览器。

您需要做的是从两个函数中获取keyup绑定(bind)代码:

gameOne();

var game = 1;

$("body").keyup(function(event) {
  if (event.which == 49 && game == 1) { // Number 1 key
    gameTwo();
  } else if (event.which == 49 && game == 2) { // Number 1 key
    gameOne();
  }
});


function gameOne() {
  game = 1;
  console.log("Game 1");
}

function gameTwo() {
  game = 2;
  console.log("Game 2");
}

关于javascript - 函数开始一遍又一遍地重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52339757/

相关文章:

javascript - Jquery 不透明度切换

javascript - 为什么我不能在外部脚本文件中调用这些 JQuery/Javascript 函数?

javascript - jquery 在遍历 DOM 时选择多个

javascript - 在数组中分组相同的值

javascript - 如何使用异步代码以正确的顺序记录响应

javascript - 提交时从给定的复选框中至少强制选择一个复选框

javascript - 如何调整图像大小并保持可缩放性

javascript - 通过 CSS/HTML 单击按钮后展开导航菜单

javascript - 如何编辑 JS 填充的输入?

sql - 如何在雪花用户定义函数中编写动态查询