2015-05-06 184 views
-3

在这个项目中,我需要设置最多10次猜测,表明猜中的是什么数字,并在每场比赛结束时将这些结果保留在屏幕上而不覆盖以前的猜测。使用while循环的猜数游戏

每组猜测输出都需要进行编号以指示已进行了多少次猜测。对于输出,我需要使用innerHTML。用户将猜测从1到999的数字。我必须使用while循环。

到目前为止,这是我工作的代码,我有一些错误,它不工作。任何人都可以让我在正确的方向完成这个代码?

,我发现的错误,当我检查的文件是checkGuess()函数和具有消息“无法读取属性‘价值’空的”

<script type="text/javascript"> 
    var randomNumber = Math.floor(Math.random() * 100) + 1; 
    var guesses = document.getElementById("guesses"); 
    var lastResult = document.getElementById("lastResult"); 
    var lowOrHi = document.getElementById("lowOrHi"); 
    var guessSubmit = document.getElementById("guessSubmit"); 
    var guessField = document.getElementById("guessField"); 
    var guessCount = 1; 

    function checkGuess() { 
     var userGuess = Number(guessField.value); 
     guesses.innerHTML += userGuess + ""; 
    } 

    while (guessCount == 10) { 
     lastResult.innerHTML = "!!!GAME OVER!!!"; 
     disableForm(); 
    } else { 

     if (userGuess == randomNumber) { 
      lastResult.innerHTML = "Congratulations! You got it right!"; 
      lowOrHi.innerHTML = ""; 
      disableForm(); 
     } else { 
      lastResult.innerHTML = "Wrong!"; 
      if (userGuess < randomNumber) { 
       lowOrHi.innerHTML = "Your guess is too low!"; 
      } else if (userGuess > randomNumber) { 
       lowOrHi.innerHTML = "Your guess is too high!"; 
      } 
     } 
     guessCount++; 
     guessField.value = ""; 
    } 
    } 

    function disableForm() { 
     var wholeForm = document.querySelector(".form"); // grab a reference to the whole form (the contents of the div with class form) 
     wholeForm.style.opacity = 0.5; // change the opacity of the form to 0.5 
     guessField.setAttribute("disabled", "disabled"); 
     guessSubmit.setAttribute("disabled", "disabled"); // disable the form field and submit button so they can no longer be used 
    } 
    guessSubmit.onclick = checkGuess; 
</script> 


</head> 

<body> 
    <h1>Number guessing game</h1> 
    <p id="guesses"></p> 
    <p id="lastResult"></p> 
    <p id="lowOrHi"></p> 

    <div class="form"> 
     <label for="guessField">Enter your next guess: </label> 
     <input type="text" id="guessField"> 
     <button id="guessSubmit">Enter Guess</button> 
    </div> 

    <p></p> 
</body> 

</html> 
+3

什么错误? – michaelpri

+2

什么是错误,哪些不起作用? – Aify

+0

我无法解决的错误之一是:function checkGuess() var userGuess = Number(guessField.value); guesses.innerHTML + = userGuess +“”; } –

回答

0

你的程序是完全错误的,是一个匿名函数实际上什么都没做

实际执行的唯一事情是你的职责, 外面的一切,只有当页面是为了执行加载首次

那些正在叫你的CheckGuess实际上你需要调用它:

<button id="guessSubmit" onclick="checkGuess() ">Enter Guess</button> 

,但一切,实际上是你的函数外只执行时加载页面时

你也有一段时间 - else语句,这还没有可能 然后再...它是一个功能外,使它也没用

你需要把在一个单独的语句 一旦你写下来的东西会呆在那里,直到页面上,你并不需要一个WHILE 一切它重新加载 如果你写了一段时间,那么你只会循环你的代码无尽。

这个代码和逻辑在很多方面都错,我会送你一个功能代码:

<script type="text/javascript"> 
var guesscount =0; 
var randomNumber = Math.floor(Math.random() * 100) + 1; 

    function checkGuess() 
    { 
     guesscount = guesscount +1; 
     var userGuess = document.getElementById("guessField").value; 
     document.getElementById('guesses').innerHTML += Number(userGuess)+ '<br>'; 
     CheckResults();  


    } 

    function CheckResults() 
    { 
     //add here your logics if the number is wrong 
     if (guesscount>= 10) 
     { 
      document.getElementById("guessField").disabled = true; 
      document.getElementById("guessSubmit").setAttribute('disabled', 'disabled'); 
      document.getElementById('guesses').innerHTML += 'game Over !'; 
     } 
    } 

</script> 


</head> 

<body> 
    <h1>Number guessing game</h1> 
    <label id="guesses"></label> 
    <label id="lastResult"></label> 
    <label id="lowOrHi"></label> 

    <div class="form"> 
     <label for="guessField">Enter your next guess: </label> 
     <input type="text" id="guessField"> 
     <button id="guessSubmit" onclick="checkGuess() ">Enter Guess</button> 
    </div> 

    <p></p> 
</body> 

</html> 
+0

感谢您的意见。我会等。 –

+0

user3692679,你认为如果我使用or do-while循环,其中的任何一个都可以帮助我做更好的编码并实现我的目标? –

+0

不,这是一个基于Web的应用程序, 您不需要whiles来让程序像控制台应用程序一样工作。 – Erin