diff --git a/index.js b/index.js index 4c2a94e..9db69db 100644 --- a/index.js +++ b/index.js @@ -25,59 +25,71 @@ function getRandomNumber(min, max) { function checkGuess() { // Get value from guess input element const guess = parseInt(guessInput.value, 10); +// Strech goal Bug validate the guess is a number between 1 and 99 + if (guess < 1 || guess > 99 || isNaN(guess)) { + alert('Please enter a valid number between 1 and 99'); + return; +} attempts = attempts + 1; - hideAllMessages(); if (guess === targetNumber) { numberOfGuessesMessage.style.display = ''; - numberOfGuessesMessage.innerHTML = `You made ${attempts} guesses`; - + numberOfGuessesMessage.textContent = `You made ${attempts} guesses`; correctMessage.style.display = ''; - submitButton.disabled = true; guessInput.disabled = true; - } - - if (guess !== targetNumber) { +// Bug 1 fixed: changed second "if" to "else" so only one block runs,removed +// (guess !== targetNumber)" to just "else" since it's the only remaining possibility. + } else { if (guess < targetNumber) { tooLowMessage.style.display = ''; } else { - tooLowMessage.style.display = ''; +// Bug 2 fixed: changed "tooLowMessage" to "tooHighMessage". + tooHighMessage.style.display = ''; } const remainingAttempts = maxNumberOfAttempts - attempts; +// Strech goal Bug added pluralization for "guess" + let guessWord = (remainingAttempts === 1) ? 'guess' : 'guesses'; numberOfGuessesMessage.style.display = ''; - numberOfGuessesMessage.innerHTML = `You guessed ${guess}.
${remainingAttempts} guesses remaining`; - } + numberOfGuessesMessage.innerHTML = `You guessed ${guess}.
${remainingAttempts} ${guessWord} remaining`; - if (attempts ==== maxNumberOfAttempts) { +//3 Bug fixed the original code had a typo with "====" instead of "===". + if (attempts === maxNumberOfAttempts) { submitButton.disabled = true; guessInput.disabled = true; +//4 Bug fixed: added "maxGuessesMessage.style.display = ''" to show the "max guesses reached" message, +// when the player runs out of attempts. + maxGuessesMessage.style.display = ''; } - - guessInput.value = ''; +} + guessInput.value = '' resetButton.style.display = ''; } function hideAllMessages() { - for (let elementIndex = 0; elementIndex <= messages.length; elementIndex++) { +//5 bug fixed changed <= With <,when elementIndex reaches 5. + for (let elementIndex = 0; elementIndex < messages.length; elementIndex++) { messages[elementIndex].style.display = 'none'; } } - -funtion setup() { +//6 bug fixed changed "funtion" with function its the correct syntax +function setup() { // Get random number targetNumber = getRandomNumber(1, 100); console.log(`target number: ${targetNumber}`); // Reset number of attempts - maxNumberOfAttempts = 0; +//7 Bug fixed: changed "maxNumberOfAttempts = 0" to "attempts = 0" +// maxNumberOfAttempts is a const (cannot be changed) and should always be 5. + attempts = 0; // Enable the input and submit button - submitButton.disabeld = false; +//8 Bug fixed: "disabeld" was a spelling error, corrected to "disabled". + submitButton.disabled = false; guessInput.disabled = false; hideAllMessages(); @@ -87,4 +99,4 @@ funtion setup() { submitButton.addEventListener('click', checkGuess); resetButton.addEventListener('click', setup); -setup(); +setup(); \ No newline at end of file