• Проигрывание CSS анимации при нажатии на клавишу на клавиатуре. Как решить проблему?

    Sanasol
    @Sanasol Куратор тега JavaScript
    нельзя просто так взять и загуглить ошибку
    Ответ написан
    Комментировать
  • Как решить проблему с модальными окнами?

    sonca-ca
    @sonca-ca
    Изначально у вас сообщение про раскладку, когда проблема с капсом вы меняете сообщение, а вот когда новая проблема с раскладкой после капса, текст не меняется и выводится что было
    if (isCyrillic(keyName)) { //вывод сообщения о не правильной раскладке
       //нужно добавить
        var modalWindowCaps = document.getElementById("alertWindowText");
        modalWindowCaps.innerHTML = ("Раскладка!");
        ...
    }  else if (capsLockEnabled && keyName != null) {
        var modalWindowCaps = document.getElementById("alertWindowText");
        modalWindowCaps.innerHTML = ("Включен CapsLock!");
        ...
    }
    Ответ написан
    1 комментарий
  • Прошу объяснить неопытному кодеру почему не работает этот чертов код...(?

    sonca-ca
    @sonca-ca
    Не понятно как именно вы хотите чтобы работал код, но сейчас он работает согласно тому, что вы написали.

    Вы написали функцию и вызываете ее один раз. В тот момент, когда вы она выполняется, в переменной keyName действительно еще ничего нет.
    Для того, чтобы ваша функция выполняла проверку после нажатия на клавишу, необходимо добавть ее вызов в функцию, которая исполняется по нажатию на клавишу.

    var keyName;
    var counterLetters = 0;
    document.addEventListener("keypress", (event) => {
        keyName = event.key;
        checkUsersKey("something");
    });
    function checkUsersKey (levelText) {
        if(levelText[counterLetters] == keyName){
            alert("true");
        }
    }
    Ответ написан
    Комментировать
  • Прошу объяснить неопытному кодеру почему не работает этот чертов код...(?

    Vlad_IT
    @Vlad_IT Куратор тега JavaScript
    Front-end разработчик
    Старый ответ
    let symbolsCounter = 0;
    let mistakesCounter = 0;
    function checkUsersKey (levelText) {
      var theEnd = false;
      var counterLetters = 0;
      var keyName;
      while (theEnd != true ) {
        document.addEventListener("keypress", (event) => {
          keyName = event.key;
          if(levelText[counterLetters] == keyName){
              alert("true");
          }
        })
        
    
        theEnd = true;
      }
    }
    checkUsersKey("something");



    Я переписал ваш код, прочитайте комментарии в нем.
    // Не очень понятно, зачем эти переменные
    let symbolsCounter = 0;
    let mistakesCounter = 0;
    
    function checkUsersKey (levelText) {
      var theEnd = false;
      var counterLetters = 0;
      var keyName;
      
      function checkKeyEvent(event) {
        keyName = event.key;
        // Это условие прекращает ваш "цикл". 
        if(theEnd) {
            document.removeEventListener('keypress', checkKeyEvent);
            return;
        }
        if(levelText[counterLetters] == keyName){
            alert("true");
        }
        // У вас в коде почему-то в конце цикла theEnd = true, это значит, что цикл не повторится.
        // Мне кажется это ошибка, но я все равно перенес ее в код для примера.
        // Можете изменять переменную в true например когда получите нужную клавишу. 
        theEnd = true;
      }
      document.addEventListener("keypress", checkKeyEvent);
    }
    checkUsersKey("something");
    Ответ написан
    Комментировать