如何调用函数onclick中的方法?

时间:2015-06-14 21:10:11

标签: javascript

我试图制作一款游戏,告诉你与随机数相比你有多热或冷。用户单击我想要运行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;
}

2 个答案:

答案 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();