为什么我的setInterval似乎在发出警报消息后最后一次运行?

时间:2018-11-07 02:52:46

标签: javascript

我正在编写一个简单的n-back游戏,在会话结束时,我弹出一条警报消息,告诉用户如果他们的n-back得分达到75%或更高,他们的n-back等级就会提高。但是由于某种原因,在用户单击“确定”或单击回车后,setInterval函数似乎又要运行一次。在我创建的网格上,即使应该结束该会话,也将再显示一个正方形。我将在下面发布相关的游戏代码:

$('#start').click(function()
  {
    let counter = 0;
    message_switch = true;
    $('#start').blur();
    $('#score-output').text(0);
    $('#percentage').text('%');
    var intervalID = setInterval(function()
      {
        counter++;
        show_card(get_cardID(cardIDs));
        if (counter === 30)
          {
            window.clearInterval(intervalID);
            message_switch = false;
            var score = Math.round((playerMatches.length / matches.length) * 100);
            score = score - (error_count * 3);
            update_score(score);
            if (score < 50)
              {
                if (n_back < 2)
                  {
                    n_back = 1;
                  } else {
                    n_back = n_back - 1;
                  }
              } else if (score < 75 && score >= 50)
                {
                  n_back = n_back;
                } else if (score >= 75) {
                  n_back = n_back + 1;
                };
            $('#nback').text(n_back);
            reset_game_values();
            if (score >= 75) //here there is some issue 
              {
                window.alert("Congratulations, you will move up to " + n_back + " back.");
                score = 0;
                return;
              } else {
                score = 0;
              }
          }
      }, 3500);
  })

我知道这是很多代码,并且我还没有提供很多代码,主要是为了简短起见。有人看到我看不到的明显东西吗?如果您觉得需要查看更多程序,我可以提供。谢谢。

0 个答案:

没有答案