我正在尝试创建一个简单的计算器但是我遇到了验证问题。有人可以解释为什么第一个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!");
}
感谢任何帮助:)
答案 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"因为那不是一个数字。