JavaScript if "x = (a || b || c)" statement not working

Solution 1:

All your multiple comparisons that look like this:

if (sct == ("Sine" || "Cosine" || "Tangent"))

need to be changed to this:

if (sct == "Sine" || sct == "Cosine" || sct == "Tangent")

To explain, when you do this ("Sine" || "Cosine" || "Tangent"), that evaluates to just "Sine" so if (sct == ("Sine" || "Cosine" || "Tangent")) is the same as if (sct == "Sine") which is obviously not what you want.


Here is your code with all the corrections applied:

var opposite = 1
var adjacent = 1
var hypotenuse = 1
var sct = "SohCahToa"
while (!(sct == "Sine" || sct == "Cosine" || sct == "Tangent")) {
    sct = prompt("Sine (unknown adjacent) / Cosine (unkown opposite side) / Tangent (unknown hypotenuse)")
    (!(sct == "Sine" || sct == "Cosine" || sct == "Tangent")) {
        alert("Spelling error, please try again")
    }
}
if (sct == "Sine" || sct == "Cosine")
    hypotenuse = prompt("What is the hypotenuse")
if (sct == "Sine" || sct == "Tangent")
    opposite = prompt("What is the opposite side")
if (sct == "Tangent" || sct == "Cosine")
    adjacent = prompt("What is the adjacent side")