繁体   English   中英

不知道我的 IF 语句有什么问题(JAVASCRIPT)

[英]Don't know what's wrong with my IF statement (JAVASCRIPT)

我正在尝试制作一个数字猜谜游戏,其中用户有 3 次机会猜测 1 到 10 之间的数字,并且在第三次尝试后,如果他们无法正确猜出数字,他们将输掉并且数字输入被禁用.

所以我的变量“tryNum”是指用户猜测的次数,我设置为 3。然后我写了我的 if 语句,每次用户猜错数字时,tryNum 的值都会减少 1。并且根据我的代码,当用户猜出 3 个不正确的数字时,输入应该被禁用并且应该显示错误消息。 但是,当我运行我的代码时,我的代码执行需要 4 次错误猜测而不是 3 次。

我不确定这是为什么。 任何帮助将不胜感激。

这是我的代码:

let min = 1,
    max = 10,
    winningNum = 3;
    tryNum = 3;

function btnClciked(){
  guessedNum = parseInt(userInput.value);
  if (tryNum > 0){
    let status;
    if (isNaN(guessedNum) || guessedNum < min || guessedNum > max ){
      if(document.querySelector(".error-display")){
        status = false;
      } else {
        status = true;
      }
      isNaN(guessedNum) ? createDivElement("You havn't entered any number!", status, "#eb992d","black", true) : createDivElement(`You must guess a number between ${min} and ${max}`, status, "#eb992d", "black", true);  
    } 
    else if (guessedNum === winningNum){
      status = true;
      userInput.disabled = true;
      userInput.style.borderColor = "green";
      submitBtn.value = "Play Again!";
      submitBtn.className += "play-again";
      createDivElement(`Congratulations! You guessed the winning number: ${winningNum} Correctly!`, status, "green", "white");
    } 
    else {
      status = true;
      userInput.style.borderColor = "red";
      userInput.value = "";
      tryNum -= 1;
      createDivElement(`${guessedNum} isn't the winning number! You have ${tryNum} more guesses left!`, status, "red", "white");
    } 
  } else {
    userInput.disabled = true;
    status = true;
    userInput.style.borderColor = "red";
    submitBtn.value = "Play Again!";
    submitBtn.className += "play-again";
    createDivElement(`Game Over! The winning number was ${winningNum}.`, status, "red", "white");
  }
}

当用户猜错时,你应该检查tryNum是否等于0 ,在这种情况下你应该表明它是 Game Over。

function btnClciked(){
  guessedNum = parseInt(userInput.value);
  if (tryNum > 0){
    let status;
    if (isNaN(guessedNum) || guessedNum < min || guessedNum > max ){
      if(document.querySelector(".error-display")){
        status = false;
      } else {
        status = true;
      }
      isNaN(guessedNum) ? createDivElement("You havn't entered any number!", status, "#eb992d","black", true) : createDivElement(`You must guess a number between ${min} and ${max}`, status, "#eb992d", "black", true);  
    } 
    else if (guessedNum === winningNum){
      status = true;
      userInput.disabled = true;
      userInput.style.borderColor = "green";
      submitBtn.value = "Play Again!";
      submitBtn.className += "play-again";
      createDivElement(`Congratulations! You guessed the winning number: ${winningNum} Correctly!`, status, "green", "white");
    } 
    else {
      status = true;
      userInput.style.borderColor = "red";
      userInput.value = "";
      tryNum -= 1;
      if(tryNum != 0){
          createDivElement(`${guessedNum} isn't the winning number! You have ${tryNum} more guesses left!`, status, "red", "white");
      } else {
        userInput.disabled = true;
        status = true;
        userInput.style.borderColor = "red";
        submitBtn.value = "Play Again!";
        submitBtn.className += "play-again";
        createDivElement(`Game Over! The winning number was ${winningNum}.`, status, "red", "white");
      }
    } 
  }
}

基本上,当您第三次没有猜到数字时,tryNum 的值是 0,但您必须再次猜测才能触发第一个 if 语句并进入最后一个 else 块。 最简单的解决方法是将最后的else块放入tryNum-=1下面的if语句中,检查变量是否为0

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM