2017-09-18 15 views
0

1-50の乱数が選択され、ユーザーが推測しなければならない数の推測ゲームを作成しようとしています。私は現在、ユーザーが間違った答えを入力した場合でも、誤ったアラートがポップアップしても、どこにいても立ち往生しています。私はどこに間違っていたのだろうと思っています。javascriptを使用してユーザーが正しい値を入力したかどうかを確認

var randomNumber = Math.floor(Math.random() * 50) + 1; 
 
console.log(randomNumber); 
 
var userGuess = document.querySelector("#guess"); 
 
document.getElementById("submit").addEventListener("click", submit, false); 
 

 
function submit() { 
 

 
    if (parseInt(userGuess) === randomNumber) { 
 
    alert("You Win"); 
 
    } else { 
 
    alert("You Lose"); 
 
    } 
 
}
<input id="guess" type="text"> 
 
<br /> 
 
<button id="submit" type="submit">Guess 1</button> 
 
<button id="submit2" type="submit">Guess 2</button> 
 
<button id="submit3" type="submit">Guess 3</button> 
 
<p id="result"></p> 
 
<p id="hotCold"></p> 
 
<h2>Your guesses</h2> 
 
<p id="prevGuesses"></p>

+0

'userGuess'は要素であり、numberへの要素を解析すると' NaN'が返されます。これはそれ自身でさえも同じではありません。 – Teemu

+0

注:フォームを送信すると、新しいページがロードされます –

答えて

2

あなたは(NaNを返します)実際の<input>要素ではなく、入力された値にparseIntを呼び出しています。これで

if (parseInt(userGuess) === randomNumber) 

:実際に入力された文字列は、要素のvalueプロパティであるので、これを置き換える

if (parseInt(userGuess.value) === randomNumber) 

をし、それが動作するはずです。 userGuess変数が(すなわちvar userGuess = document.querySelector("#guess").value代わりvar userGuess = document.querySelector("#guess")の)値で初期化すること作ることは動作しないことを

注意、DOM要素が動的に更新されている間など、valueプロパティは、単純な文字列であり、そのためuserGuessはANに設定されます。空の文字列(開始値は<input>)、ユーザーが数字を入力すると更新されません。

+0

ありがとう、これはうまくいきました!私は何かが簡単でないことを知っていた。メモも気に入ってよかったです。 –

0

あなたはvalue of inputを取得し、その

if (parseInt(userGuess.value) === randomNumber) { 

て行くために、あなたが良いと

if (parseInt(userGuess) === randomNumber) { 

を交換する必要があります。

関連する問題