Здравствуйте!У меня есть вопрос по поводу заявления jQuery if.Оператор if всегда выполняется даже после того, как условие становится ложным.Какие-нибудь мысли? - PullRequest
0 голосов
/ 28 марта 2019

Кажется, что код запускает оператор if даже после того, как условие start установлено в true.

Я тоже пытался это сделать, но у меня все та же ошибка. если (началось === ложно && началось! == верно)

if (started == false){ /*this always runs even after started is 
                           set to true??? */

      //when any key pressed, start the game // exit if statement?
    $(document).on("keypress",function(event){
      console.log(started + "started inside keydown function");
      startGame();    // <-- runs another function that also sets 
                         //started to true
      started = true;
    });

    $("body").on("click",function(){
      console.log(started + "inside click function");
      checkClicks++;
      if(checkClicks > 2){
        $("h1").text("Press any KEY first to start the game!");
      }
    });
  } 

Решение ниже для тех, у кого есть подобные проблемы. Оказывается, callBacks всегда вызывается несмотря ни на что. Лучше всего помещать в них заявления.

$(document).ready(function() {
  var started = false;
  var checkClicks = 0;
  /*change h1 to notify player to type a key first*/



  //when any key pressed, start the game // exit if statement?
  $(document).on("keypress",function(){
    if (started == false) {
      //console.log(started + "started inside keydown function");
      startGame();
      started = true;

    }
  }
);

$("body").on("click",function(){
  if(started == false){
    //console.log(started + "inside click function");
    checkClicks++;
    if(checkClicks > 2){
      $("h1").text("Press any KEY first to start the game!");
    }
  }
});

1 Ответ

0 голосов
/ 28 марта 2019

обратный вызов $(document).on("keypress",function(event){ вызывается на keypress ... при каждом нажатии клавиши, это настройка обратного вызова, вызываемая при нажатии клавиши, и она не заботится о состоянии if вне обратного вызова, обратный вызов не знать об операторе if ... поместить оператор if в обратный вызов

$(document).on("keypress",function(event){
  if (started == false) {
    console.log(started + "started inside keydown function");
    startGame();
    started = true;
  }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...