-2

何らかのルールを忘れているのかもしれません。自分が何をしたいのかを明確に伝える必要があります。「sph」変数に何を入力して保存しても、最初のアラートだけが表示されます。どちらかといえば、「else」ステートメントが機能することを期待しています。「==」および「===」演算子を使用するなど、さまざまな方法を試しました。また、「switch」ステートメントに変更し、「else if」の代わりに「if」を使用し、ネストも試しました。構文の間違いは見られないので、次の推測では、私がしようとしている方法で配列にアクセスできないということです。

注: 2 番目のプロンプト入力は、負の数を意図しています。なぜ私が「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

4 に答える 4

3

=演算子が必要なときに演算子を繰り返し使用しました==。最初は値を割り当てます。2つ目はテストです。===また、データ型が同じかどうかもテストします。多くの場合、この方法が推奨されます。

そしてbfavarettoのポイント。

于 2013-08-11T20:57:07.460 に答える
2

等値演算子 ( !ではなく==and ) を使用して、配列内の値をチェックすることはできません。代わりに次のようなものを使用してください。====

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/

于 2013-08-11T20:59:52.080 に答える
1

== または === 演算子を使用する必要があるときに代入演算子を使用しています。

http://www.w3schools.com/js/js_comparisons.aspを参照してください。

于 2013-08-11T20:56:55.920 に答える
0

==等しいかどうかは、演算子を使用してテストされます。

于 2013-08-11T20:57:33.710 に答える