JSFiddle - React, Tailwind, and code Playground
HTML
<p>
здесь можно поиграть в виселицу
</p>
JavaScript
var words = [
"переменная",
"ромашка",
"загадка",
"клавиатура",
"водопад",
"серобуромалиновый",
"ночь"
];
var word = words[Math.floor(Math.random() * words.length)];
var answerArray = [];
for (var i = 0; i < word.length; i++) {
answerArray[i] = "_"; // ЭТОТ КОД ПОВТОРИТ НИЖНЕЕ ПОДЧ. СТОЛЬКО РАЗ, СКОЛЬКО БУКВ В СЛОВЕ (i++)
}
var remainingLetters = word.length;
while (remainingLetters > 0) { // ПОКА ОСТАВШИХСЯ БУКВ БОЛЬШЕ НУЛЯ,
alert(answerArray.join(" ")); // ПОКАЖИ СЛОВО НИЖНИМ ПОДЧЁРКИВАНИЕМ С РАЗДЕЛИТЕЛЕМ-ПРОБЕЛОМ
var guess = prompt("Введите букву").toLowerCase(); // ПОТОМ ЗАПРОСИ У ПОЛЬЗОВАТЕЛЯ БУКВУ
if (guess === null) { // ЕСЛИ ПОЛЬЗОВАТЕЛЬ НАЖАЛ ОТМЕНА,
break; // ТО ВЫЙДИ ИЗ ИГРЫ
}
else if (guess.length !== 1) { // ЕСЛИ ПОЛЬЗОВАТЕЛЬ ВВЁЛ НЕ ОДНУ БУКВУ
alert("Пожалуйста, введите только одну букву"); // ПОКАЖИ ЭТО
}
else { // ИНАЧЕ
for (var j = 0; j < word.length; j++) { // ПОКА J = 0, J < КОЛ-ВО БУКВ В СЛОВЕ
if (word[j] === guess) { //ЕСЛИ ПЕРВАЯ/ВТОРАЯ(J) БУКВА ПЕРЕМЕННОЙ WORD - ТО, ЧТО ВВЁЛ ПОЛЬЗОВАТЕЛЬ,
answerArray[j] = guess; // ТО ПРИСВОЙ НОМЕРУ БУКВЫ(J) ЗНАЧЕНИЕ GUESS
remainingLetters--; // И УМЕНЬШИ ОСТАВШИЕСЯ БУКВЫ НА 1
}
}
}
} // КОНЕЦ ИГРОВОГО ЦИКЛА
alert(answerArray.join(" "));
alert('Отлично! Было загадано слово "' + word + '"');