2015-05-06 224 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