resetButton не работает, как исправить?
Весь код:
let NUMBER = Math.round(Math.random() * 10); // случайное число, которое нужно отгадать
console.log(NUMBER);
let textarea = document.querySelector('.textarea'); // поле ответа пользователя
let btn_Submit = document.querySelector('.btn-Submit'); // кнопка отправить
let guesses = document.querySelector('.guesses'); // строка, отображающая введенный ответ
let last_result = document.querySelector('.last_result'); // результат попытки : победа/ проигрыш/ истраченная попытка
let more_or_less = document.querySelector('.more_or_less'); // ответ пользователя больше или меньше случайного число, которое нужно отгадать
let attempts = 0; // количество истраченных попыток
const container = document.querySelector('.container');
let resetButton;
// получаем введенный ответ пользователя
btn_Submit.addEventListener('click', take_answer);
textarea.addEventListener('keydown', function(e) {
if (e.keyCode === 13) {
take_answer()
}
})
function take_answer() {
guesses.textContent = '';
last_result.textContent = '';
textarea.focus();
answer = Number(textarea.value);
console.log(answer);
if (answer == NUMBER) {
func_win();
} else if (attempts == 5) {
guesses.textContent = 'попытки кончились, вы проиграли!'
setGameOver();
} else if (answer > 10 || answer < 0) {
guesses.textContent = `${answer}: не соблюдает условия!`
attempts += 1;
textarea.value = '';
} else if (attempts != 5) {
guesses.textContent = `число не угадано`;
attempts += 1;
textarea.value = '';
func_wrong();
}
}
function func_win() {
section = document.querySelector('.nothing');
container.className = 'nothing';
section.className = "hacked";
setGameOver();
}
function func_wrong() {
if (answer > NUMBER) {
last_result.textContent = `ваше число ${answer} больше загаданного`
} else {
last_result.textContent = `ваше число ${answer} меньше загаданного`
}
}
// function create_btn_Reset(name) {
// var parent = document.getElementsByClassName('.btn');
// var btn = document.createElement('div');
// btn.className = 'btn';
// btn.style.width = '100px';
// btn.style.height = '300px';
// btn.style.background = '#c5c5c5';
// btn.style.color = '#000';
// var text = 'начать игру заново';
// var textNode = document.createTextNode(text);
// btn.appendChild(textNode);
// parent.appendChild(btn);
// articleDiv.appendChild(btn);
// parent.addEventListener('click', resetGame);
// }
function setGameOver() {
textarea.disabled = true;
btn_Submit.disabled = true;
resetButton = document.createElement('button');
resetButton.textContent = 'Start new game';
document.body.appendChild(resetButton);
resetButton.addEventListener('click', resetGame);
}
function resetGame() {
attempts = 0;
parent.parentNode.removeChild(parent);
var resetParas =
document.querySelectorAll('.results p');
for (var i = 0; i < resetParas.length; i++) {
resetParas[i].textContent = '';
}
resetButton.parentNode.removeChild(resetButton);
textarea.disabled = false;
btn_Submit.disabled = false;
textarea.value = '';
textarea.focus();
NUMBER = Math.round(Math.random() * 10);
}
html {
font-family: Lato;
}
body {
display: flex;
width: 100vw;
height: 100vh;
margin: 0 auto;
justify-content: center;
align-items: center;
background: rgb(204, 147, 147);
}
.lastResult {
color: white;
padding: 3px;
}
.container {
z-index: 3;
min-height: 20vh;
min-width: 20vw;
/* max-width: 90vw; */
padding: 20px 50px;
background: rgb(215, 159, 159);
display: flex;
justify-content: center;
align-items: start;
flex-direction: column;
}
h1 {
margin-bottom: 20px;
width: 100%;
text-align: justify;
white-space: pre;
}
.form {
display: grid;
grid-template-areas: "a a a""b b c""b b c";
}
p {
grid-area: a;
margin-bottom: 5px;
}
.textarea {
grid-area: b;
height: 22px;
}
.btn-Submit {
cursor: pointer;
grid-area: c;
/* justify-self:end; */
/* text-align: justify; */
font-size: 13px;
font-family: sans-serif;
font-weight: 400;
background: rgba(237, 197, 197, 0.496);
margin-left: 5px;
/* height: 20px; */
padding: 4px;
}
.nothing {
opacity: 0;
z-index: 0;
position: absolute;
}
.hacked {
z-index: 4;
display: flex;
flex-direction: column;
height: auto;
width: 60vw;
Justify-items: center;
align-items: center;
background: pink;
color: rgb(255, 42, 42);
font-size: 30px;
font-weight: 600;
border: 4px rgb(243, 114, 114) solid;
/* color: rgb(255, 42, 42); */
}
.win_p {
margin-top: 30px;
}
.img {
margin: 0;
}
.hacked::after {
content: "♥";
}
<div class="container">
<h1>Отгадайте число от 0 до 10</h1>
<div class="form">
<p>Ваше число: </p>
<input type="text" class="textarea">
<input type="button" value="Отправить" href="#" class="btn-Submit">
<div id="str"></div>
</div>
<div class="results">
<p class="guesses"></p>
<p class="last_result"></p>
<p class="more _or_less"></p>
</div>
</div>
<div class="btn"></div>
<section class="nothing win">
<div class="win_p"> Вы победили!</div>
<img class="img" src="png.png">
</section>
function setGameOver() {
textarea.disabled = true;
btn_Submit.disabled = true;
resetButton = document.createElement('button');
resetButton.textContent = 'Start new game';
document.body.appendChild(resetButton);
resetButton.addEventListener('click', resetGame);
}
function resetGame() {
attempts = 0;
parent.parentNode.removeChild(parent);
var resetParas =
document.querySelectorAll('.results p');
for (var i = 0; i < resetParas.length; i++) {
resetParas[i].textContent = '';
}
resetButton.parentNode.removeChild(resetButton);
textarea.disabled = false;
btn_Submit.disabled = false;
textarea.value = '';
textarea.focus();
NUMBER = Math.round(Math.random() * 10);
}
Ответы (1 шт):
Автор решения: Проста Miha
→ Ссылка
Просто так
const inputNumber = document.getElementById('input-number');
const inputNumberBtn = document.getElementById('input-number-btn');
const container = document.querySelector('.container');
// Генерируем рандомное число от 0 до 10
let randomNumber = Math.floor(Math.random() * 10);
let attemp = 0;
inputNumberBtn.addEventListener('click', () => {
let numberValue = inputNumber.value;
inputNumber.value = null;
if (numberValue > 10 || numberValue < 0) {
attemp += 1;
if (attemp >= 3) {
showModalMessage('Попытки кончились, вы проиграли!');
return;
}
showMessage(numberValue + ' - Вы не соблюдаете правила!', 'alert');
return;
}
if (numberValue == randomNumber) {
showModalMessage('Вы выйграли!', 'win');
return;
}
if (numberValue > randomNumber) {
showMessage('Вы не угадали! Ваше число ' + numberValue + ' больше загаданного', 'up');
} else {
showMessage('Вы не угадали! Ваше число ' + numberValue + ' меньше загаданного', 'down');
}
})
function deleteLastMessage() {
let message = document.querySelector('.message');
if (message != null) {
message.remove();
}
}
// Создаём сообщения
function showMessage(text, className) {
deleteLastMessage();
message = document.createElement('div');
message.classList.add('message', className);
message.textContent = text;
container.append(message);
}
// Создаём модальное окно
function showModalMessage(text) {
let modal = document.createElement('div');
modal.className = 'modal';
modal.textContent = text;
let restartBtn = document.createElement('button');
restartBtn.className = 'btn btn-restart';
restartBtn.textContent = 'Начать новую игру';
restartBtn.addEventListener('click', (e) => {
deleteLastMessage();
attemp = 0;
randomNumber = Math.floor(Math.random() * 10);
e.target.parentElement.remove();
})
modal.append(restartBtn);
container.append(modal);
}
* {
font-family: consolas;
}
body {
width: 100%;
min-height: 100vh;
margin: 0;
display: flex;
align-items: center;
justify-content: center;
background: rgb(204, 147, 147);
}
/* Убираем стрелочки у инпута */
input::-webkit-outer-spin-button,
input::-webkit-inner-spin-button {
-webkit-appearance: none;
margin: 0;
}
input[type=number] {
-moz-appearance: textfield;
}
.container {
padding: 32px;
box-shadow: 0 0 12px 2px rgba(0, 0, 0, .5);
}
.input-number {
display: flex;
justify-content: space-between;
}
.btn {
padding: 6px 24px;
}
.modal {
position: absolute;
width: min(480px, 100%);
background: rgb(204, 147, 147);
box-shadow: 0 0 12px 2px rgba(0, 0, 0, .5);
padding: 32px;
display: flex;
align-items: center;
flex-direction: column;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
.btn-restart {
margin-top: 32px;
}
<div class="container">
<h1>Отгадайте число от 0 до 10</h1>
<p>Ваше число:</p>
<div class="input-number">
<input type="number" id="input-number">
<button class="btn" id="input-number-btn">Отправить</button>
</div>
</div>