2015-04-03 124 views
-1
<body> 
<input id ="guessNumber" type="text"> 
<button id="button" onclick="check()">click here</button> 



<script language="javascript" type="text/javascript"> 
var randomNumber = Math.floor((Math.random()*6)); 
var guessNumber = document.getElementById("guessNumber").value; 

function check() { 
    if(guessNumber==randomNumber){ 
     alert("you are correct"); 
    } 
    else { 
     alert("you are wrong"); 
    } 
} 
</script> 
</body> 

我想寫一小遊戲程序,我放在一個號碼,如果該方法的Math.random值相等,應該警惕「TRUE」,但它只是提示「FALSE」(「這是錯誤的」我的警報代碼)。給我一個解釋爲什麼發生這不僅僅是答案,爲什麼guessNumber變量字符串?的Javascript如果否則返回或者只TRUE或FALSE僅

+2

'如果((+ guessNumber)===(+ randomNumber)){...',或者只是做非嚴格的比較 – adeneo 2015-04-03 14:40:53

+0

它只警告正確(真),即使它是劑量警報也是錯誤的。 – 2015-04-03 14:42:21

+0

哇@adeneo:在這種情況下,它是作爲解析器工作的嗎?不知道。 – briosheje 2015-04-03 14:59:40

回答

4

此行是功能之外。

var guessNumber = document.getElementById("guessNumber").value; 

它獲取一次值,它不會隨着文本更改而更新。將其移動到方法中。

第二個問題,你是比較一個數字和一個字符串。輸入的值是一個字符串。你正試圖比較一個數字和一個字符串。輸入console.log("3"===3);到您的控制檯。

var randomNumber = Math.floor((Math.random() * 6)); 
 

 
function check() { 
 

 
    var guessNumber = parseInt(document.getElementById("guessNumber").value, 10); 
 
    if (guessNumber === randomNumber) { 
 
    alert("you are correct"); 
 
    } else { 
 
    alert("you are wrong"); 
 
    } 
 
}
<input id="guessNumber" type="text"> 
 
<button id="button" onclick="check()">click here</button>

也許如果你像這樣運行一個測試你就會明白

var randomNumber = Math.floor((Math.random() * 6)); 
 

 
var initialValue = document.getElementById("guessNumber").value; 
 
var currentValue; 
 

 
function check() { 
 

 
    currentValue = document.getElementById("guessNumber").value; 
 
    alert("initialValue: " + initialValue + " | currentValue: " + currentValue + " | randomNumber : " + randomNumber); 
 
    
 
    var guessNumber = parseInt(currentValue, 10); 
 
    if (guessNumber === randomNumber) { 
 
    alert("you are correct"); 
 
    } else { 
 
    alert("you are wrong"); 
 
    } 
 
}
<input id="guessNumber" type="text" value="INITIAL VALUE"> 
 
<button id="button" onclick="check()">click here</button>

+0

Ya guessNumber是一個全局對象,它可以更新嗎? – 2015-04-03 14:44:06

+0

變量是全局變量,但該值不會自動更新。這將是代碼第一次運行時的情況。 – epascarello 2015-04-03 14:44:58

+0

雅,但我只是讀它不更新該部分,我只更新窗口對象警報。 – 2015-04-03 14:47:18

-1

guessNumber是一個字符串,randomNumber是一個數字。試試這個:

function check() { 
    if(guessNumber==randomNumber){ 
     alert("you are correct"); 
    } 
    else { 
     alert("you are wrong"); 
    } 
} 

https://stackoverflow.com/a/359509/2690289

+0

爲什麼它被轉換爲一個字符串?我輸入的是一個數字。我該如何將它轉換爲數字? – 2015-04-03 14:50:17

+0

輸入值是一個字符串。 '「3」'不是數字 – epascarello 2015-04-03 14:53:18

+0

它不會被轉換爲字符串。輸入框的值隱式地具有字符串的數據類型。 更多信息:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures – 2015-04-03 15:30:07

相關問題