Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Не работает onkeypress. (https://javascript.ru/forum/events/52628-ne-rabotaet-onkeypress.html)

Blondinka 27.12.2014 23:41

Не работает onkeypress.
 
Здравствуйте.
Алгоритм работы кода.
1. Генерируется случайная буква и отображается на экране.
2. При вводе в поле <input> любого символа, программа сравнивает его с только что сгенерированным.
3. Если значения равны - пользователь оповещается alert`ом.

https://github.com/VaAlina/type_faster

window.onload = function () {
var array = ["a", "b", "c", "d", "e", "f", "g", "h", "i","j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"];
var getRandomLetter = function () {
return array[Math.floor(Math.random() * array.length)];//Генерирую случайную букву.
};
letter = getRandomLetter();//Присваиваю переменной функцию.
document.getElementById("word").textContent = letter;//Записываю в пустой div случайную переменную letter.
userInput = document.getElementById("inputValue");//Получить ввод пользователя.
function compareValues(){
if(letter == userInput){alert("You win!")};//Cравнить ввод пользователя с текущим случайным символом.
}
};

<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="style.css"/>
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<input id="inputValue" onkeypress="compareValues()" maxlength="1" autocomplete="off" autofocus />
<div id="word"></div>
</body>
</html>


Первый пункт точно работает, а вот по поводу остальных я сильно сомневаюсь.

Пожалуйста, помогите найти ошибку.

Rise 28.12.2014 13:04

Blondinka,
userInput = document.getElementById("inputValue").value;

Blondinka 28.12.2014 14:54

Вот тут всё работает.
<!DOCTYPE html>
<html>
<body>

Name: <input type="text" id="myText" onkeyup="myFunction()" autofocus />

<script>
function myFunction() {
   var first = document.getElementById("myText").value;
   if(first=='a'){
   alert('you win!');
   }else{
   alert(first);
   };
}
</script>
</body>
</html>



А мой код, вообще ни как не реагирует на ввод. Скорее всего, ошибка в последней функции.
window.onload = function () {

var array = ["a", "b", "c", "d", "e", "f", "g", "h", "i","j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"];//Работает.

var getRandomLetter = function () {
    return array[Math.floor(Math.random() * array.length)];//Генерирую случайную букву. Работает.
};

letter = getRandomLetter();//Присваиваю переменной функцию. Работает.
document.getElementById("word").textContent = letter;//Записываю в пустой div случайную переменную letter. Работает.

function myFunction() {//Вне зависимости от наличия аргумента, не работает.
   var first = document.getElementById("inputValue").value;
   if(first == letter){
   alert('you win!')}else{
   alert(first);
   };
}

};

<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="style.css"/>  
<script type="text/javascript" src="script.js"></script>
</head>
<body>

<input id="inputValue" onkeyup="myFunction()" maxlength="1" autocomplete="off" autofocus />

<div id="word"></div>

</body>
</html>

Blondinka 28.12.2014 18:26

Решила!!!
Я создала 2 функции, generateSign() привязала к body onload, compare() - к событию onkeyup().

var generateSign = function(){
var array = ["a", "b", "c", "d", "e", "f", "g", "h", "i","j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"];//Работает.

var getRandomLetter = function () {
    return array[Math.floor(Math.random() * array.length)];//Генерирую случайную букву. Работает.
};

letter = getRandomLetter();//Присваиваю переменной функцию. Работает.
document.getElementById("word").textContent = letter;//Записываю в пустой div случайную переменную letter. Работает.

}

var compare = function(){
   var first = document.getElementById("inputValue").value;
   if(first == letter){
   alert('you win!')}else{
   alert(first);
   };
}


Часовой пояс GMT +3, время: 18:09.