2013-05-21 21 views
0
var num1 = prompt("Enter first number: ", "number"); 
var num2 = prompt("Enter second number: ", "number"); 

if (num1 > num2) { 

    document.write("<p>" + num1 + " is greater than " + num2 + "</p>"); 
} else { 

    document.write("<p>" + num2 + " is greater than " + num1 + "</p>"); 
} 

當我在那時執行此代碼時,它每次都執行其他部分,所以它的解決方案是什麼?提前謝謝你。如果 - 否則在JavaScript中不工作

+0

你比較兩個刺 – Guanxi

回答

8

您正在比較字符串(這是什麼prompt返回,即使用戶鍵入數字)。第一個值轉換爲數字:

if(+num1 > +num2){ 

如果用戶輸入任何非數字到prompt S,A NaN將生產和您可能會看到奇怪的結果。我會這樣設置:

var num1 = +prompt("Enter first number: ", "number"), 
    num2 = +prompt("Enter second number: ", "number"); 

if (!isNan(num1) && !isNaN(num2)) { 
    if (num1 > num2) { 

    } else if (num2 > num1) { 

    } else { 
     // Numbers equal 
    } 
} else { 
    // At least one of them isn't a number 
} 
+0

這是一個JS快捷方式我不知道有關解析函數嗎?如果是這樣,有趣。 – TreyE

+0

@TreyE無論哪種方式工作。 '+'較短。 –

+0

我只是想知道實際上做了什麼,我從來沒有在JS中見過它。它是一個前綴運算符,轉換爲最大可用數值嗎?任何人有關於這個很酷的小東西的任何文檔? – TreyE

1

在比較之前,您需要將輸入(字符串)解析爲數字(整數/浮點數)。

使用parseInt函數或parseFloat,如:(分別)

var num1 = parseInt(prompt("Enter first number: ", "number"));

var num2 = parseFloat(prompt("Enter second number: ", "number"));

2

的Javascript,當你比較任意變量有真/假時髦的定義。你將要進行100%確保您提示已投了許多像你希望它是這兩個參數的輸入:

var num1 = parseInt(prompt("Enter first number: ", "number")); 
var num2 = parseInt(prompt("Enter second number: ", "number")); 

使用+運營商是很大的簡寫,但除了我上面的快速回答之外,您可能會想要添加一些檢查以確保它們不會給您垃圾。

此外,請務必查看Ian的答案 - 它包含對+運算符的一個很好的解釋,以及它如何用於強制。

+0

非常感謝您的幫助。其實我認爲在JAVASCRIPT中沒有像JAVA那樣的數據類型有任何區別。但是,非常感謝你的友善和有用的信息...... –

+0

@RajPatel數據類型沒有什麼區別?那麼'G + T'等於什麼?當然,數據類型有所不同。自動類型轉換並不意味着數據類型不存在。 –

0

prompt返回一個字符串,而不是數字。在比較之前,您需要將提示結果轉換爲數字。

0
var num1 = parseFloat(prompt("Enter first number: ", "number")); 
var num2 = parseFloat(prompt("Enter second number: ", "number")); 

prompt返回一個字符串值,需要將其解析爲一個數字。

0

在你的情況下,變量num1num2是STRING。比較之前需要轉換爲INT類型:

var num1 = parseInt(prompt("Enter first number: ", "number")); 

var num2 = parseInt(prompt("Enter second number: ", "number")); 

提示未來:您可以將typeof運算得到您的變量的類型()