2013-11-27 100 views
1

我想基於函數的一個使用的Math.random函數生成1和4如何關聯使用的Math.random功能使用IF語句

之間的數字輸出輸出不同的消息
function roll() 
{ 
return Math.floor(Math.random()*4+1) 
} 

當按下按鈕時,函數被調用並且一個全局變量'a'被分配給滾動函數的結果。

var a; 
function buttonPressed() { 
roll() 
a = roll() 
answertq = (x*y); 

以下代碼基本上意味着,如果用戶提供了答案框答案是正確的,那麼,這取決於輥函數輸出一個不同的信息如下面的結果。

if (parseInt(document.getElementById("inputVal").value) == answertq) 
{ 
    if (a=1) 
    { 
     window.alert("Very good!"); 
    } 
    else if (a=2) 
    { 
     window.alert("Excellent!"); 
    } 
    else if (a=3) 
    { 
     window.alert("Correct, Nice work"); 
    } 
    else if (a=4) 
    { 
     window.alert("Correct - Keep up the good work"); 
    } 

} 

除了當我這樣做時,我總是得到第一個答案(「非常好!」),每次問題是正確的。這意味着roll函數有問題,因爲它將1賦給全局變量'a'或其他我沒有發現的東西。任何幫助將非常感激。我提供了以下兩個問題的截圖。

[1] http://imgur.com/riFktIH 「例一」 [2] http://imgur.com/YjcmuRx 「例二」

+0

請了解['開關(){}'聲明】(https://developer.mozilla.org/en-US /文檔/網絡/的JavaScript /參考/語句/開關)。 –

+0

另一種方法是將消息存儲在一個數組中,並用一個隨機索引訪問它:var success_msgs = [「Correct」,「You got it」,...]',後面緊跟着'success_msg [roll()]''。 – apsillers

回答

2

除了我這樣做時,我總是得到第一每次問題都是正確的時候,回覆(「非常好 好!」)。

原因是因爲您沒有比較您指定的值。 ==僅用於比較,=用於指定。如果語句使用賦值運算符 「=」,而不是比較操作 「==」

if (a==1) 
    { 
     window.alert("Very good!"); 
    } 
    else if (a==2) 
    { 
     window.alert("Excellent!"); 
    } 
    else if (a==3) 
    { 
     window.alert("Correct, Nice work"); 
    } 
    else if (a==4) 
    { 
     window.alert("Correct - Keep up the good work"); 
    } 
+1

謝謝你的幫助!它現在完美。我沒有意識到兩者之間有區別。 – Skywhisky

+0

@Skywhisky: - 不客氣!附:還請閱讀有關開關: - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/switch –

0
所有

您的:

試試這個

if (parseInt(document.getElementById("inputVal").value) == answertq) { 
    if (a==1) { 
     window.alert("Very good!"); 
    } 

等等

1

爲什麼不使用數組作爲消息? 這樣你可以使用隨機數作爲數組的索引。

var msg = [ 
    "Very good!", 
    "Excellent!", 
    "Correct, Nice work", 
    "Correct - Keep up the good work" 
]; 

function randomMsg(){ 
    var random = Math.floor(Math.random() * 4); 
    alert(msg[random]); 
} 

編輯:陣列基於零所以沒有 「+1」

+0

這是一個偉大的方式做到這一點,但我努力實現它到我的自己的節目。但非常感謝你的幫助。 – Skywhisky