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