也许我忘记了某种规则。 告诉我要做什么应该是显而易见的。似乎无论为'sph'变量输入和存储什么,我得到的唯一警报是第一个。如果有什么我希望'else'声明可以工作。我尝试了不同的方法,比如使用'=='和'==='运算符。我也将它改为'switch'语句,使用'if而不是'else if',并尝试嵌套。我没有看到任何语法错误,所以我的下一个猜测是我无法以我想要的方式访问数组。
注意:第二个提示输入是一个负数;万一你想知道我为什么'cyl< = 0'。
var sph = prompt("What is the sphere power?");
var cyl = prompt("What is the cylinder power?");
var sixSevenFive = [6.5, 6.25, 6];
var six = [5.75, 5.5, 5.25];
var five = [5, 4.75, 4.5, 4.25];
var fourFive = [4.0, 3.75, 3.5];
var four = [3.25, 3.00, 2.75, 2.5, 2.25, 2, 1.75, 1.5, 1.25, 1, .75, .5, .25];
if ((sph = four) && (cyl <= 0)) {
alert("Use a 4.00 Base lens.");
}
else if ((sph = fourFive) && (cyl <= 0)){
alert("Use a 4.50 Base lens.");
}
else if ((sph = five) && (cyl <= 0)){
alert("Use a 5.25 Base lens.");
}
else if ((sph = six) && (cyl <= 0)){
alert("Use a 6.00 Base lens.");
}
else if ((sph = sixSevenFive) && (cyl <= 0)){
alert("Use a 6.75 Base lens.");
}
else {
alert("You entered an invalid prescription.");
}
答案 0 :(得分:3)
当您需要=
运算符时,您已反复使用==
运算符。第一个赋值。第二个是测试。 ===
还会测试数据类型是否相同,并且通常更可取。
和bfavaretto的观点。
答案 1 :(得分:2)
您不能使用相等运算符(==
和===
,而不是=
!)来检查数组中的值。请改用这样的东西:
if(four.indexOf(sph) > -1 && cyl <= 0) { // etc
另外,在输入上使用parseFloat
以确保将数字与数字(不是字符串)进行比较:
var sph = parseFloat(prompt("What is the sphere power?"));
var cyl = parseFloat(prompt("What is the cylinder power?"));
答案 2 :(得分:1)
当您使用==或===运算符时,您正在使用赋值运算符。
答案 3 :(得分:0)
使用==
运算符测试平等性。