Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Solucionado (ver solución)
Solucionado
(ver solución)
3
respuestas

¿Por qué no funcionó la condición del if?

Buenas, si bien hice que el programa funcione de otra forma, quería saber porqué lo que puse primero no funcionó (usé la variable NumeroLanzado para la condición del if). Así mismo, acepto feedback y posibles mejorías, gracias!

<meta charset="utf-8">


<h3> ADIVINA EL NÚMERO</h3>
<br><br><br>


Ingrese el número que cree que es : <input> </input>

<br><br><br>

<big><button>Averigua si ganaste</button></big>


<script>

//FUNCIONES MARCO

    function saltarlinea() {

        document.write("<br> <br>");

    }

    function imprimir(frase) {

        document.write(frase);
        saltarlinea();

    }


//VARIABLES

    var input = document.querySelector("input");
    var button = document.querySelector("button");

    input.focus();

    var NumeroSecreto = parseInt(Math.round(Math.random()*10));
    //var NumeroLanzado = parseInt(input.value) <-¿Por qué esto no funcionó al poner "(NumeroLanzado == NúmeroSecreto)" en la condición del if?

    var intentoActual = 0;
    var intentosMaximos = 5;


//DESARROLLO


    function verificar () {

        if (parseInt(input.value) == NumeroSecreto) {

            alert("Usted acertó!");
            input.focus();
            intentoActual = 0;
            imprimir("El número era " + NumeroSecreto)
            input.value = "";
            NumeroSecreto = Math.round(Math.random()*10);
        }

        else {

            if (intentoActual<intentosMaximos) {

                alert("Erró, intente de nuevo");
                input.value = "";
                input.focus();
                intentoActual++;
            }
            else {

                button.onclick = imprimir("Se terminaron sus intentos, el número era " + NumeroSecreto)

            }

        }

    }


    button.onclick = verificar;



</script>
3 respuestas

Hola, has intentado colocar el input de esta manera < input type="text"> . Quita también la etiqueta de cierre, creo que está es una de las etiquetas que no tienen etiquetas de cierre. Espero te sirva

solución!

Hola! Por lo que veo, no funciona de esa manera porque vos lo estás declarando fuera de la función con x valor, entonces si no le pasas esa variable como parámetro, cuando vos la utilices dentro de la función no va a tener ese mismo valor. Va a pasar a ser una variable distinta. (Esto es lo que yo tengo entendido, pero como también estoy aprendiendo, no te lo aseguro al 100% jajaja).

Realicé este cambio en la función y pasó a andar bien:

function verificar () { 
      var NumeroLanzado = parseInt(input.value)

        if (NumeroLanzado == NumeroSecreto)

Lo demás lo dejé sin ningún cambio, así que no pego todo el código. Pero con ese detalle, ya anda bien.

Una observación aparte, es que siempre me dejó hacer 1 intento más del que debería. Creo que es debido a la variable "intentoActual" que comienza en 0, en vez de 1 (Ya que el primer intento, justamente, es un intento. Valga la redundancia jaja).

Espero que te haya servido! Cualquier duda, te leo en la respuesta. Saludos.

Gracias por sus aportes Federico y Oscar.! Probé lo que me dijiste Federico y funcionó, y con lo de los intentos también tenías razón, así que pude mejorarlo gracias a eso. Muchas gracias! :D