Don';我不知道是什么';我的IF语句(JAVASCRIPT)有错

Don';我不知道是什么';我的IF语句(JAVASCRIPT)有错,javascript,if-statement,Javascript,If Statement,我正在尝试制作一个数字猜测游戏,用户有3次机会猜测1到10之间的数字,第三次尝试后,如果他们没有正确地猜测数字,他们将失败,并且数字输入将被禁用 所以我的变量“tryNum”是指用户得到的猜测次数,我将其设置为3。然后我写了if语句,每当用户猜错了数字,tryNum的值就会减少1。根据我的代码,当用户猜到3个错误的数字时,输入应该被禁用,并显示一条错误消息。然而,当我运行我的代码时,我的代码需要4次错误猜测而不是3次 我不知道这是为什么。任何帮助都将不胜感激 这是我的密码: let min =

我正在尝试制作一个数字猜测游戏,用户有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");
  }
}
让min=1,
最大值=10,
winningNum=3;
tryNum=3;
函数btnClciked(){
guessedNum=parseInt(userInput.value);
如果(tryNum>0){
让状态;
如果(isNaN(猜测数值)| |猜测数值<最小值| |猜测数值>最大值){
if(document.querySelector(“.error display”)){
状态=假;
}否则{
状态=真;
}
isNaN(guessedNum)?createDivElement(“您还没有输入任何数字!”,状态,“#eb992d”,“黑色”,true):createDivElement(`您必须猜测介于${min}和${max}之间的数字,状态,“#eb992d”,“黑色”,true);
} 
else if(guessedNum==winningNum){
状态=真;
userInput.disabled=true;
userInput.style.borderColor=“绿色”;
submitBtn.value=“再次播放!”;
submitBtn.className+=“再次播放”;
createDivElement(`恭喜!您猜对了中奖号码:${winningNum})`,状态为“绿色”、“白色”);
} 
否则{
状态=真;
userInput.style.borderColor=“红色”;
userInput.value=“”;
tryNum-=1;
createDivElement(`${guessedNum}不是中奖号码!您还有${tryNum}个猜测!状态为“红色”、“白色”);
} 
}否则{
userInput.disabled=true;
状态=真;
userInput.style.borderColor=“红色”;
submitBtn.value=“再次播放!”;
submitBtn.className+=“再次播放”;
createDivElement(`Game Over!中奖号码为${winningNum}`,状态为“红色”、“白色”);
}
}

当用户猜错时,应检查
tryNum
是否等于
0
,在这种情况下,应显示游戏结束

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");
      }
    } 
  }
}
函数btnclicked(){
guessedNum=parseInt(userInput.value);
如果(tryNum>0){
让状态;
如果(isNaN(猜测数值)| |猜测数值<最小值| |猜测数值>最大值){
if(document.querySelector(“.error display”)){
状态=假;
}否则{
状态=真;
}
isNaN(guessedNum)?createDivElement(“您还没有输入任何数字!”,状态,“#eb992d”,“黑色”,true):createDivElement(`您必须猜测介于${min}和${max}之间的数字,状态,“#eb992d”,“黑色”,true);
} 
else if(guessedNum==winningNum){
状态=真;
userInput.disabled=true;
userInput.style.borderColor=“绿色”;
submitBtn.value=“再次播放!”;
submitBtn.className+=“再次播放”;
createDivElement(`恭喜!您猜对了中奖号码:${winningNum})`,状态为“绿色”、“白色”);
} 
否则{
状态=真;
userInput.style.borderColor=“红色”;
userInput.value=“”;
tryNum-=1;
如果(tryNum!=0){
createDivElement(`${guessedNum}不是中奖号码!您还有${tryNum}个猜测!状态为“红色”、“白色”);
}否则{
userInput.disabled=true;
状态=真;
userInput.style.borderColor=“红色”;
submitBtn.value=“再次播放!”;
submitBtn.className+=“再次播放”;
createDivElement(`Game Over!中奖号码为${winningNum}`,状态为“红色”、“白色”);
}
} 
}
}

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

谢谢您的回答。我确实理解你的代码。但是你能解释一下为什么我的代码是错误的吗?@m3hran你的代码是错误的,因为你会显示“0次剩余尝试”,而不是“游戏结束”。当用户猜错时,您需要检查他们是否还有更多的尝试。