He estado jugando con esto por un tiempo y parece que no puedo entender por qué la declaración else no aparece cuando escribo cualquier número negativo en el cuadro de diálogo, he intentado crear una declaración if adicional usando Math.sign (num ) para verificar si el número es negativo para verificar si es menor que cero, pero no he tenido suerte para que funcione. mi pensamiento fue descartar otras posibilidades y si todas las afirmaciones anteriores eran falsas, el número tenía que ser negativo. ¿Qué estoy haciendo mal aquí?
var num = parseFloat(prompt("please enter a number", "")); var barRepeat = "*".repeat(num); //made this to get a visual bar displaying * equal to the number given if (num > 0) { document.write(num); document.write("=>"); document.write(barRepeat); } else if (num == 0) { document.write("The number you entered is 0"); } else if (isNaN(num)) { document.write("error you entered an invalid character"); } else { document.write("the number you entered is negative, please try again"); }Si ingresa un número negativo, "*".repeat(num) obtiene un error y la secuencia de comandos se detiene allí, sin tener que ir a las declaraciones if .
Mueva eso a la declaración if para que solo cree la barra de repetición cuando la entrada sea válida.
var num = parseFloat(prompt("please enter a number", "")); if (num > 0) { var barRepeat = "*".repeat(num); //made this to get a visual bar displaying * equal to the number given document.write(num); document.write("=>"); document.write(barRepeat); } else if (num == 0) { document.write("The number you entered is 0"); } else if (isNaN(num)) { document.write("error you entered an invalid character"); } else { document.write("the number you entered is negative, please try again"); }Siempre que una función de JavaScript no se comporte como espera, el primer lugar en el que debe buscar es la consola en busca de mensajes de error.
Además, consulte ¿Por qué document.write se considera una "mala práctica"?