Lo probé haciendo primero una matriz y luego eligiendo el máximo, pero la salida siempre es NaN
<!DOCTYPE html> <html> <body> <h2>Write a function in JavaScript which accept three numbers as arguments and display the greatest number.</h2> <p id="demo"></p> <script> selnum = [num1, num2, num3]; var num1 = prompt("Please wirte any number"); var num2 = prompt ("Please write 2nd number"); var num3 = prompt("Please wirte 3rd number"); document.write(Math.max(selnum)); </script> </body> </html>
Hay múltiples soluciones.
Puedes hacerlo con un Array, o solo con var.
Con matriz:
var num1 = prompt("Please write any number"); var num2 = prompt("Please write 2nd number"); var num3 = prompt("Please write 3rd number"); var arr = [num1, num2, num3]; document.write(Math.max(...arr));
Con var:
var num1 = prompt("Please write any number"); var num2 = prompt("Please write 2nd number"); var num3 = prompt("Please write 3rd number"); document.write(Math.max(num1, num2, num3));
Si no quieres Math.max puedes hacer:
var num1 = prompt("Please write any number"); var num2 = prompt("Please write 2nd number"); var num3 = prompt("Please write 3rd number"); var arr = [num1, num2, num3]; var maxi = num1; for(let i = 1; i < arr.length; i++){ maxi = (maxi < arr[i] ? arr[i] : maxi); } document.write(maxi);
Con una función se verá algo como:
function f(num1, num2, num3){ return Math.max(num1, num2, num3); // Without array }
Encontré esto como el que funciona.
<script> var num1 = prompt("Please wirte any number"); var num2 = prompt("Please write 2nd number"); var num3 = prompt("Please wirte 3rd number"); document.write(Math.max(num1, num2, num3)); </script>
Su selnum = [num1, num2, num3];
está sucediendo antes de que realmente obtenga los números del usuario. Debe poner esa línea después de las líneas de prompt()
.
También es posible que deba convertir los valores en números, ya que prompt()
siempre devuelve una cadena y es posible que no se clasifiquen de la forma esperada.
Finalmente, Math.max
no acepta una matriz, acepta un número ilimitado de parámetros. Así que necesitas usar .apply
aquí.
var num1 = prompt("Please wirte any number"); var num2 = prompt("Please write 2nd number"); var num3 = prompt("Please wirte 3rd number"); var selnum = [parseInt(num1, 10), parseInt(num2, 10), parseInt(num3, 10)]; console.log(Math.max.apply(Math, selnum));
Además, document.write
realmente ya no se usa. Use console.log
y verifique su consola de desarrollador en el navegador.