我试图制作一款游戏,告诉你与随机数相比你有多热或冷。用户单击我想要运行checkNumber
方法的按钮。我该怎么做?在我试图学习的过程中,请随时告诉我这段代码的所有错误。
到目前为止,我已经尝试过html:
<button type="submit" id="userGuess" onclick="hotcold().checkNumber()"></button>
在JS中:
function hotcold(){
var realNumber = 0;
var newGame = function(){
realNumber = Math.floor(Math.random() * 100)+1
return realNumber
}
var checkNumber = function (){
var userinput = parseInt(document.getElementById("userGuess").value);
var message ;
if ( userinput == realNumber){ message = " Good Job you did it"}
else if (Math.abs(userinput - realNumber) > 30){ var message = "You're colder than cold "}
else if (Math.abs(userinput - realNumber) <= 30 && Math.abs(userinput - realNumber) > 10 ){ message = " You're getting closer"}
else if (Math.abs(userinput - realNumber) <= 10 && Math.abs(userinput - realNumber) > 2 ){ message = " You're hot, now im scared"}
else if (Math.abs(userinput - realNumber) <= 2){ message = " If you don't get this by next turn, something wrong with you"}
else { message = " skjdksjhdsk "}
alert(realNumber);
alert(message);
}
return realNumber;
}
答案 0 :(得分:0)
<input type="text" id="userGuess></input>
<button onclick="checkNumber()">Click to Guess!</button>
<script>
var realNumber;
var newGame = function(){
realNumber = Math.floor(Math.random() * 100) + 1;
};
newGame();
var checkNumber = function (){
var userinput = parseInt(document.getElementById("userGuess").value);
var message;
//Always use three '=' signs in Javascript when comparing values
if (userinput === realNumber) {
message = " Good Job- you did it!";
newGame();
} else if (Math.abs(userinput - realNumber) > 30) {
// the 'message' variable was already declared. Don't use 'var' again here
message = "You\'re colder than cold";
} else if (Math.abs(userinput - realNumber) <= 30 && Math.abs(userinput - realNumber) > 10 ) {
message = "You\'re getting closer...";
} else if (Math.abs(userinput - realNumber) <= 10 && Math.abs(userinput - realNumber) > 2 ) {
message = "You\'re hot, now I\'m scared";
} else if (Math.abs(userinput - realNumber) <= 2){
message = "If you don\'t get this by next turn, something\'s wrong with you";
}
//Not sure why you would want to show the user the real number before he guessed it
//alert(realNumber);
alert(message);
};
</script>
这是另一个快速提示:只需将Math.abs(userinput - realNumber)
的结果保存到变量中,就可以节省一些打字和一些不必要的函数调用:
...
var userinput = parseInt(document.getElementById("userGuess").value);
var difference = Math.abs(userinput - realNumber);
var message;
...
} else if (difference > 30) {
...
答案 1 :(得分:0)
尝试以下代码
<button type="submit" id="userGuessButton"></button>
和
function hotcold(){
var realNumber = 0;
var newGame = function(){
realNumber = Math.floor(Math.random() * 100)+1
return realNumber
}
newGame();
var button = document.getElementById("userGuessButton");
button.addEventListener("click", function (){
checkNumber();
})
}
var checkNumber = function (){
var userinput = parseInt(document.getElementById("userGuess").value);
var message ;
if ( userinput == realNumber){ message = " Good Job you did it"}
else if (Math.abs(userinput - realNumber) > 30){ var message = "You're colder than cold "}
else if (Math.abs(userinput - realNumber) <= 30 && Math.abs(userinput - realNumber) > 10 ){ message = " You're getting closer"}
else if (Math.abs(userinput - realNumber) <= 10 && Math.abs(userinput - realNumber) > 2 ){ message = " You're hot, now im scared"}
else if (Math.abs(userinput - realNumber) <= 2){ message = " If you don't get this by next turn, something wrong with you"}
else { message = " skjdksjhdsk "}
alert(realNumber);
alert(message);
}
hotcold();