давайте пройдемся по вашей логике c
<script>
function getValue(){
var input = document.getElementById("textField").value;
var letters = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j"] ;
var a = letters.indexOf(input);
, в этом бите вы открыли тег сценария и объявили функцию getValue
. Затем вы получаете входные данные из элемента html с идентификатором "textField"
, инициализируете массив letters
с 10 буквами, затем ищите letters
для input
, возвращая его индекс. Однако это приводит к тому, что ввод будет прочитан только один раз. Затем он выполнит ваш для l oop в течение трех итераций, создавая потенциально нежелательную ошибку.
Подумайте об этом так,
Ваша функция должна быть где-то запущена. При встраивании в html это будет происходить onclick()
для кнопки под входом. это означает, что каждый раз, когда вызывается функция, вход считывается один раз, и l oop запускается три раза на одном и том же входе . Я бы начал с создания переменной вне вашей getValue
функции - мы назовем ее attempts
- которая позволит нам обновлять переменную при каждом запуске функции. Затем избавьтесь от for для l oop и используйте условное ветвление, например,
var attempts = 0;
function getValue(){
var input = document.getElementById("textField").value;
var letters = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j"] ;
var a = letters.indexOf(input);
if (attempts < 3) {
// check if input is right
if (input != "" && a != -1) {
alert("success");
}
attempts += 1;
}
// no else statement needed to terminate the program
// simply don't handle occurrences of attempts greater than 3
}
Просьба прокомментировать все, что вы не уверены в