es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Mi función de entrada en Javascript siempre devuelve falso, incluso cuando un usuario introduce el valor correcto.

Quiero saber por qué mi función siempre devuelve falso, y cómo puedo solucionarlo.
Al principio pensé que tenía algo que ver con mi sintaxis en check = (“stairway to heaven” === value || “Stairway to heaven” === value);. Pero no importa cómo lo haga, siempre es falso.

Intenté leer sobre esto, pero según mi comprensión, no me ayuda.

He creado esto en JavaScript para hacer diferentes cosas dependiendo de si el resultado de check es verdadero o falso.

else if (textNodes [15] .id === 16 && & nextTextNodeId === 16) {
mostrarContenedorCanción();
si(comprobar) {
mostrarTextNode(17);
}
si (!comprobar) {
textElement.innerText = ‘¡Eso está súper mal! ¡Tal vez si usaras ese pequeño cerebro tuyo lo descubrirías!’;
mostrarTextNode(11);
}

El código anterior ejecuta esta función primero, para determinar si una entrada de texto devuelve verdadero (escalera al cielo) o falso (cualquier cosa que no sea escalera al cielo):

function mostrarContenedorCanción() {
    songContainer.style.display = 'unset';
    const songInput = document.getElementById('songInput');
    const songButton = document.getElementById('songButton');

songButton.addEventListener('click', (e) => {
    e.preventDefault();
    let value = songInput.value;

 check = ("stairway to heaven" === value || "Stairway to heaven" === value);
});


} 

Sin embargo, cuando comienza el primer else if (en el primer bloque de código), siempre va al if (! Comprobar), antes de que se haya ingresado la entrada de texto. ¿Por qué es esto? ¿Y cómo hago para que devuelva el primer if (en el primer bloque de código) si la entrada de texto es correcta, y el otro if, si es incorrecto?

También tengo let check = ”; en un ámbito global al comienzo de mi código, si eso tiene algo que ver con ello.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema es que estás estableciendo el valor de check dentro de la función showSongContainer, pero estás comprobando el valor de check fuera de la función.

    Para solucionar esto, debes mover la declaración if que comprueba el valor de check dentro de la función showSongContainer, para que se evalúe después de que se haya establecido el valor de check.

    Por ejemplo:

    function showSongContainer() {
        songContainer.style.display = 'unset';
        const songInput = document.getElementById('songInput');
        const songButton = document.getElementById('songButton');
    
        songButton.addEventListener('click', (e) => {
            e.preventDefault();
            let value = songInput.value;
    
         check = ("stairway to heaven"===value || "Stairway to heaven"===value);
    
         if(check) {
                showTextNode(17);
            }
            if (!check) {
                textElement.innerText = '¡Eso está muy mal! Quizás si usas un poco más la cabeza puedas descubrirlo!';
                showTextNode(11);
            }
        });
    } 
    

Comments are closed.