Así que estaba poniendo este código de un ejercicio en node.js en un formato para javascript front-end para poder cargarlo como una página web. Comprueba si el número es primo o no. El código es:
let num = 6 let divisions = 0 for (let n = 1; n <= num; n++) { if (num % n == 0) { divisions++ } } if (divisions == 2) { console.log(`O número ${num} é primo!`) } else { console.log(`O número ${num} não é primo!`) }Esto funciona bien en la consola.
En cuanto a la página HTML5, puse el código dentro de una función onclick y simplemente modifiqué la variable para que obtenga un número de un cuadro de entrada de números. Y cambió la última parte para cambiar el innerHTML del resultado div en lugar de un console.log . Y una simple alerta para comprobar si el número es superior a 2.
function verifyPrime() { let num = document.getElementById('txtnum') if (num <= 1 || num.length == 0){ alert('insert numbers 2 or higher') Pero luego las cosas salieron mal. Los literales de la plantilla devolvieron un error [object HTMLInputElement] . console.log(typeof(num) devolvió un objeto en la consola, que no obtuve.
Luego agregué un .value al final del comando getElement. Luego devolvió el número correcto, pero el typeof dijo que era una cadena.
Por último, agregué un Number() al todo, que devolvió el número y el tipo correcto.
Mis preguntas son:
1- ¿Por qué el primer comando simple devolvió un objeto inútil para el script?
2- ¿Por qué el script funciona normalmente cuando recibe una cadena? ¿No debería funcionar solo con números, ya que Booth the loop y el segundo if/else pide números?
Sé que si funciona, está bien... ¡pero quiero tener una comprensión más profunda de la lógica de codificación! ¡Gracias!