超级初学者JavaScript ....我做错了什么?

时间:2015-02-05 19:25:34

标签: javascript

我正在尝试创建一个简单的计算器但是我遇到了验证问题。有人可以解释为什么第一个if语句通过但是当我输入第二个提示的答案时它会跳回第一个if语句,好像它没有在第一个位置传递一样吗?

到目前为止,这是我的代码...... 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!");
}

感谢任何帮助:)

3 个答案:

答案 0 :(得分: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是一个字符串数组,您必须将其解析为整数格式,然后检查它

答案 1 :(得分:0)

userNumbers应该是一个包含两个元素的数组 - 但是您要检查它是否不是数字。 isNaN(userNumbers)将返回true,因此您将始终收到此警报:

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

相反 - 你应该检查它是否是一个数组,如果它的长度是2。

答案 2 :(得分:0)

因为在您提示输入数字和运算符之后执行数字输入的验证。两个提示完成后,检查userNumbers是否为空字符串,或者isNaN(usernumbers)是否返回true,它将用于我的输入" 2 2"因为那不是一个数字。