Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

[Duda] Tengo un problema con un ejercicio de practica

Hola estaba intentando poner en practica el curso de botones y input. decidiendo mejorar otro codigo de adivinanzas de otro curso anterior el problema, es que intentaba mostrar los intentos con el alert y siempre me mostraba que acertaba cuando se cerraba el while, cuando acertaba en el primero o segundo intento, y peor aun si limpiaba el input y lo enfocaba ( input = " " ; input.focus(); ), eso hacia que nisiquera me reconociera el numero acertado. si saben cual es el error les agreadeceria. gracias :,c

<meta charset="utf-8">

<h1>Programa Para Adivinar</h1>

<input/>
<button>Ingrese un numero del 0 - 3</button>

<script>

    function saltarLinea(){

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

    }

    function imprimir(a){

        document.write("<big>"+ a +"</big>");
        saltarLinea();

    }

    var numeroPensado = Math.round(Math.random()*3);


    var intentos = 3;
    var n = 1;

    while (n <= intentos){

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

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

        var numeroLanzado = parseInt(input.value);



        function verificar (){



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


                alert("usted acerto en el intento "+ n + " y el numero pensado era: "+ input.value);

                    n=intentos+1;

                }

                else{

                    alert("usted error el numeroPensado es: "+ numeroPensado);


                }

        }

        button.onclick = verificar;


    n++;

    }



</script>
1 respuesta

Tu codigo está un poco desordenado y hay muchos espacios en blanco lo cual hace un poco difícil leerlo.

Además la variable numeroLanzado está de más ya que en ese punto de tu codigo tu input está vacio y al intentar convertir el value a int la variable almacenara NaN(not a number)

También puede que el rango que elegiste para los numeros sea demasiado pequeño lo cual podria ocasionar que muchas veces seguidas se adivine el numero al primer intento

También te hago una observacion extra por lo general onclick se utiliza cuando generamos codigo HTML al vuelo osea que no estaba en el archivo HTML originalmente si no que lo creamos mediante Js Si queres añadir un evento a un elemento que ya se encuentra en el HTML te recomiendo usar addEventListenner como lo uso en el codigo de abajo

no lo probe pero debria funcionar, cualquier duda estoy al tanto

<meta charset="utf-8">

<h1>Programa Para Adivinar</h1>

<input/>
<button>Ingrese un numero del 0 - 3</button>

<script>
    function saltarLinea(){
        document.write("<br><br><br><hr><br><br>");
    }

    function imprimir(a){
        document.write("<big>"+ a +"</big>");
        saltarLinea();
    }

    var numeroPensado = Math.round(Math.random()*3);

    var intentos = 3;
    var n = 1;
    var encontrado = false

    var input = document.querySelector("input");
    var button = document.querySelector("button");
    button.addEventListener("click", validar)

    function validar() {
        if (input.value === "") {
            alert("Debe ingresar un numero")
            return;
        }

        if (Number(input.value) !== numeroPensado) {
            alert(`Fallaste te quedan ${intentos-n} intentos`)
            input.value = ""
            n++
        }

        if ( n > 3) {
            alert(`Se agotaron los intentos, el numero era: ${numeroPensado}`) //Acá uso un template string, estos se usan para poder intectar variable u otros resultados en un string
            return;
        }

        alert("Adivinaste!!!")
        input.value = ""
        numeroPensado = Math.round(Math.random()*3);
    }

</script>