Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
4
respuestas

Solo me funciona Si el input es 3

Hola por favor alguien me ayuda. Si el imput es diferente a "3" , siempre responde Usted erró, sin importar que el input sea 5, 7 o 9

<meta charset="UTF-8">

<h1>secreto5</h1>

<input/> 

<button> Verificar si acertó</button>

<script>
    var numerosSecretos = [3,5,7,9]

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


    input.focus()//ubica el cursor en el cuadro al iniciar a iteración

 function verificar() {    

        //variable       condicion       incrementador
    for (var posicion = 0; posicion < 4; posicion = posicion +1) {

            if (parseInt(input.value) == numerosSecretos[posicion]) {

        alert("Usted acertó");

    }
    else {
         alert("Usted erró"); 
     }
         input.value = ""//Deja el campo vacio en cada iteración
    input.focus()//ubica el cursor dentro del cuadro  despues de cada consulta 

} 

    }    

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






</script>.
4 respuestas

Hola Carlos!

Al momento de pegar tu código, procura seleccionarlo todo y presionar el ícono que está en la barra de herramientas de este editor de texto que tiene forma de </>. De esta manera se puede interpretar cómo texto, ya que si sólo lo copias y lo pegas no va a aparecer correctamente.

Este es un ejemplo de cómo se vería haciendólo de la manera correcta:

<!DOCTYPE html>
<html>
    <h1>Esto es un ejemplo</h1>
</html>

Ya que si lo pegas directamente el resultado sería este:

Esto es un ejemplo

De esta manera se hace más fácil para la comunidad al momento de solucionar el problema. Un saludo!

Gracias Juán, Ya lo edité.

Carlos,

El problema es que en tu búcle sólo estás considerando la primera posición, por eso sólo te arrojará "usted acertó" cuando aciertes en el primer intento y no tomará en consideración las posiciones posteriores. Debes declarar una variable extra cómo hace el maestro en la clase, que te verifique la existencia del valor, independientemente de la posición en la que está. Luego de esto, recuerda que el código que se ejecuta fuera de las llaves {} del búcle es independiente, por lo que en vez de utilizar else, debes usar otro if. Creo que así se solucionaría el problema:

<script>
//Recomendación: En la condición en vez de poner un 4, utiliza el tamaño del arreglo usando .length, así cuando aumentes o disminuyas el arreglo, no tendrás que cambiar ese otro valor.
for (var posicion = 0; posicion < numerosSecretos.length; posicion++) {
    //acá declaro la variable check para verificar.
    var check = false;
     if (parseInt(input.value) == numerosSecretos[posicion]) {
        alert("Usted acertó");
        check = true;
        break;
     }
}
//Acá lleva otro if, ya que está fuera del búcle. En esta ocasión vas a verificar el valor de check, si no se cumple el if del bucle, saltará a este.
if (check == false) {
    alert("Usted erró"); 
}
</script>

Bueno y tambien tener en cuenta que cada linea termina con punto y coma, mriando tu codigo vi como dos lineas sin el punto y coma