2015-02-05 87 views
-1

我想創建一個簡單的計算器,但我有驗證問題。有人可以解釋爲什麼第一個if語句會通過,但是當我爲第二個提示輸入回答時,它會跳回第一個if語句,就好像它沒有通過第一個語句一樣?超級初學者JavaScript ....我在做什麼錯誤?

這是到目前爲止我的代碼... http://jsfiddle.net/kiradale/03nLz9bh/

var userNumbers = prompt("Enter only two numbers.").split(" "); 
var a = userNumbers[0]; 
var b = userNumbers[1]; 

var userOperator = prompt("Enter a multiplication, division, addition, or subtraction operator."); 

if (userNumbers == '' || isNaN(userNumbers)){ 

    alert("Hey! Enter only two numbers and no blanks!"); 
} 

if (userOperator === "*" || userOperator === "/" || userOperator === "+" || userOperator === "-"){ 

    var myCalculator = function(a,b){ 

     alert("okay ready to go"); 
    } 

    myCalculator(); 
} 

else { 
     alert("Hey! Enter only the specified operators and no blanks!"); 
} 

任何幫助表示讚賞:)

+5

'userNumbers'是一個數組,不是一個字符串或數字。 – Nit 2015-02-05 19:28:42

+0

@Nit是正確的,在第一個if語句中,您需要直接檢查&b變量而不是userNumbers。 – Superdrac 2015-02-05 19:30:23

+0

檢查a和b是否是數字而不是userNumbers – 2015-02-05 19:30:51

回答

0

userNumbers應該是有兩個元素的數組 - 但你檢查,如果它不是一個數量。 isNaN(userNumbers)將返回true,所以你總是會得到此警告:

(userNumbers == '' || isNaN(userNumbers)) 

相反 - 你應該檢查是它是一個數組,如果它的長度爲2

1

您可以使用這樣的事情

var userNumbers = prompt("Enter only two numbers.").split(" "); 
var a = parseInt(userNumbers[0]); 
var b = parseInt(userNumbers[1]); 
var userOperator = prompt("Enter a multiplication, division, addition, or subtraction operator."); 

if (isNaN(a) || isNaN(b)){ 

    alert("Hey! Enter only two numbers and no blanks!"); 
} 

else if (userOperator === "*" || userOperator === "/" || userOperator === "+" || userOperator === "-"){ 

    var myCalculator = function(a,b){ 

     alert("okay ready to go"); 
    } 
    myCalculator(); 
} 

else { 
     alert("Hey! Enter only the specified operators and no blanks!"); 
} 

您必須檢查a和b是否爲數字。由於userNumber是一個字符串數組,因此您必須將其解析爲整數格式,然後檢查它

0

因爲數字輸入的驗證在提示輸入數字和運算符後執行。在兩個提示都完成後,檢查userNumbers是否爲空字符串,或者isNaN(usernumbers)返回true,它將用於我的輸入「2 2」,因爲這不是數字。