2012-05-27 67 views
2

我是JavaScript新手。這是我第二天開始實際學習JavaScript。我不知道問這個問題是否合適,因爲有太多的指導方針和標準需要遵循。JavaScript:警報不適用於腳本

那麼,在這裏,我寫了一個小腳本,它不工作。當value < 5 && value > 5它顯示警報。但是當有人給出答案5(這是正確的答案)。它沒有顯示任何警報?我試圖解決這個問題,但我無法解決這個問題。這裏是我的代碼:

<script type="text/javascript"> 
    var number = prompt("count these numbers: 2+5-10+8=?"); 
    if(number === 5) { 
    alert("Congratulations Your Answer is Correct"); 
    } 
    else if (number > 5 ) { 
     alert("Your answer is a little higher."); 
    } 
    else if (number < 5) { 
     alert("Your answer is little lower than actual answer."); 
    } 
</script> 
+1

[你一定要在這一個使用jQuery。(http://i.stack.imgur.com/sGhaO.gif) –

+1

@Azib - 既然你新的JavaScript,我想指出,德里克是在開玩笑;) – jmort253

回答

8

提示符正在返回一個字符串,但是您正在對數字進行嚴格的相等測試。

你可以...

  • 測試的字符串,而不是number === "5"

  • 或使用==代替===,這會爲你做一個轉換,

  • 或將提示轉換爲數字number = parseInt(number, 10)

  • 或者如果你可能被測試爲花車,使用number = parseFloat(number)

+0

Upvoted爲更完整的選項集 –

+0

非常感謝,我試過==標誌,它工作正常。 –

+0

@AzibYaqoob:小心那個。如果你測試的數字是'0',並且用戶傳遞一個空字符串,它將顯示爲正匹配。 – 2012-05-27 23:53:48

3

我建議:

var number = parseInt(prompt("count these numbers: 2+5-10+8=?"),10); 
+0

你在'parseInt'前面我+1 – 2012-05-27 23:51:37

+0

不是一個好的答案,使用'parseInt'意味着像'5asda'這樣的答案將被接受爲正確的。使用相等運算符'=='更簡單。 – RobG

0

當你做一個「===」比較,它會檢查確切類型匹配起來,在這種情況下,您需要檢查數字5是否等於STRING 5(或其他輸入的內容),這是錯誤的。

您需要的答案解析成一個整數,如大衛·托馬斯已經暗示:

var number = parseInt(prompt("count these numbers: 2+5-10+8=?")); 
0

簡單的答案是使用==,而不是完全平等===

請勿使用parseInt,因爲它會將5iasd轉換爲5,因此您要麼接受不正確的答案,要麼需要額外的測試。

請勿使用parseFloat,因爲這不是必需的。使用==表示以下全部爲真:

var n = 5; 

n == '5' 
n == '5.0' 
n == '5e0' 
n == '0.5e1' 

等等。

哦,作爲參考,您應該瞭解ECMAScript Abstract Equality Comparison Algorithm的工作原理。

-1

試試這個:

ScriptManager.RegisterStartupScript(this, GetType(), "alertmsg", "alert('your message');", true); 
相關問題