1

I want to know why my function always returns false, and how I can fix it. At first I thought it had something to do with my syntax at check = ("stairway to heaven"===value || "Stairway to heaven"===value);. But no matter how I put it, it's always false.

I tried reading into this, but as far as I could understand, it doesn't help me.

I've created this in JavaScript to do different things depending on if the result of check is true or false.

else if (textNodes[15].id === 16 && nextTextNodeId === 16)  {
        showSongContainer();
        if(check) {
            showTextNode(17);
        }
        if (!check) {
            textElement.innerText = 'That’s superwrong! Maybe if you would use that small brain of yours you’d figure it out!';
            showTextNode(11);
        }

The above code runs this function first, to determine if a text input returns true (stairway to heaven) or false (anything other than stairway to heaven):

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);
    });
} 

However, when the first else ifstarts (in the first codeblock), it always goes to the if(!check), before the text input has even been entered. Why is this? And how do I make it so that it returns the first if (in the first code block) if the text input is correct, and the other if, if incorrect?

I also have let check = ''; in a global scope at the beginning of my code, if that has anything to do with it.

Nick is tired
  • 6,860
  • 20
  • 39
  • 51
William S
  • 39
  • 6
  • Can you make it a runnable snippet and demonstrate the whole problem in a self-contained way, please? One matter that needs to be cleared up is that it's unclear if that's the same `check` variable used in both of your code examples. Also, your checks currently run after you install the click handler, but before you click the button, so that's quite likely not what you intended either. – Wyck Nov 19 '21 at 03:25
  • Try this condition style: `else if ((textNodes[15].id === 16) && (nextTextNodeId === 16))` add inner parenthesis – A1exandr Belan Nov 19 '21 at 03:29
  • Insted of checking any spelling option try to normalize value: `check = ("stairway to heaven"===value.trim().toLowerCase())` – A1exandr Belan Nov 19 '21 at 03:36

0 Answers0