如果陈述错了

时间:2013-08-11 20:56:05

标签: javascript

也许我忘记了某种规则。 告诉我要做什么应该是显而易见的。似乎无论为'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.");
}

4 个答案:

答案 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?"));

演示http://jsfiddle.net/Wmesx/

答案 2 :(得分:1)

当您使用==或===运算符时,您正在使用赋值运算符。

请参阅http://www.w3schools.com/js/js_comparisons.asp

答案 3 :(得分:0)

使用==运算符测试平等性。