Soy bastante nuevo en javascript, por lo que realmente no puedo encontrar lo que está mal en mi código. A continuación se muestra el código:
<script language="javascript"> var x = parseInt(prompt("Enter the first number.","")); var y = parseInt(prompt("Enter the second number.","")); var z = prompt("Enter an operation.",""); var total = 0; switch (z) { case "1": case "+": case "add": case "addition": case "sum": var total = x + y; break; case "2": case "-": case "sub": case "subtract": case "subtraction": case "diff": case "difference": var total = x - y; break; case "3": case "x": case "*": case "mult": case "multiply": case "multiplication": case "prod": case "product": var total = x * y; break; case "4": case "/": case "divide": case "division": case "quo": case "quotient": if (y == 0) { document.getElementById("total1").innerHTML = "Error. You cannot divide by 0." } else { var total = x / y; } break; default: document.getElementById("total1").innerHTML = "There is something wrong with one of your inputs. Please reload the page." } if (isNaN(total) == false) { document.getElementById("total1").innerHTML = total }Cuando ingreso 0 en el mensaje de la variable y, no muestra "Error. No se puede dividir por 0". y en su lugar muestra solo 0. Hay un lapso total con la identificación de total1.
La identificación de intervalo era anteriormente "total", así que la cambié a "total1" pero aún no funcionó.
Su código funciona, pero el HTML interno de su span se reemplaza por este bloque:
if (isNaN(total) == false) { document.getElementById("total1").innerHTML = total } Como total se inicializa en 0 (y no cambia para operaciones como "dividir") isNaN(total) da como resultado false y eso escribe el total (que en este caso sigue siendo 0 ) en su elemento span .
Además de eliminar la palabra clave var (como se sugiere en la respuesta de JuanDeLasNieves), también debe inicializar el total como undefined en lugar de 0:
var total = undefined;El problema es que declara var total = 0 en la cuarta línea de su código, y luego en cada uno de sus casos dentro de la declaración de switch , lo vuelve a declarar. Pero esas variables existen solo en el alcance de esa declaración.
Entonces, cuando su código llega al if final, verifica si isNan(0) == false , que no lo es, por lo que establece el HTML interno al valor de total .
Solución: elimine todas las palabras clave var dentro de la declaración de switch e intente nuevamente.