Great resource for learning JavaScript
Posted by markhwebster on January 18th, 2018 • 0 Comments • Full Article
I worked through an entire JavaScript course at www.lynda.com but didn’t really feel that I had mastered the language. I did some cool stuff, Morten is always good, but I wanted more. One of his links at the end took me here.
I worked through their first tutorial and it made the classic Number Guessing Game.
I think I can get it working here in wordpress…but I will probably have to run it in an iframe. That will be tomorrows task, since it’s almost midnight.
Until I found this tutorial at developer.mozilla.org I was starting to get frustrated. I’d finished Morten’s course…and I didn’t feel any smarter. But once I started doing this Number Guessing Game, I realized I had actually learned a ton from Morten. The for loop was completely logical. Anyway, I’m making progress. Here is the code:
Here is the HTML:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Guessing game</title>
<style>
html {
font-family: sans-serif;
}
body {
width: 50%;
max-width: 800px;
min-width: 480px;
margin: 0 auto;
}
.lastResult {
color: white;
padding: 3px;
}
.guessSubmit {
background-color: rgb(238, 223, 182);
}
.guessSubmit:hover {
background-color: rgb(11, 198, 41);
color: white;
}
.guessField {
background-color: rgb(245, 242, 207)
}
</style>
</head>
<body>
<h1>Mark's number guessing game</h1>
<p>
We have selected a random number between 1 and 100. See if you can guess
it in 10 turns or fewer. We'll tell you if your guess was too high or too low.
</p>
<div class="form">
<label for="guessField">Enter a guess:</label>
<input type="text" id="guessField" class="guessField">
<input type="submit" value="Submit guess" class="guessSubmit">
</div><!--end class="form"-->
<div class="resultParas">
<p class="guesses"></p>
<p class="lastResult"></p>
<p class="lowOrHi"></p>
</div><!--end class.resultParas-->
and the script:
<script>
var randomNumber = Math.floor(Math.random() * 100) +1;
var guesses = document.querySelector('.guesses');
var lastResult = document.querySelector('.lastResult');
var lowOrHi = document.querySelector('.lowOrHi');
var guessSubmit = document.querySelector('.guessSubmit');
var guessField = document.querySelector('.guessField');
var guessCount = 1;
var resetButton;//creates empty variable
function checkGuess(){
var userGuess = Number(guessField.value);
//captures what ever they guess into userGuess, makes sure it's a number
if (guessCount === 1){//is it their first guess?
guesses.textContent = 'Previous guesses: ';
}
guesses.textContent += userGuess + ', ';
//add latest userGuess to list of guesses.
if (userGuess === randomNumber) {//they nailed it!
lastResult.textContent = 'Congratulations! You got it right!';
lastResult.style.backgroundColor = 'green';
lowOrHi.textContent = '';//empty out Previous 'you are too low!'
setGameOver();
} else if (guessCount === 10) {
//they played it 10 times...we counted each time
lastResult.textContent = '!!!GAME OVER!!!';
setGameOver();
} else {
lastResult.textContent = 'Wrong!';
lastResult.style.backgroundColor = 'red';
if (userGuess < randomNumber) {
lowOrHi.textContent = 'Last guess was too low!';
} else if (userGuess > randomNumber){
lowOrHi.textContent = 'Last guess was too high!';
}
}
guessCount++;//incrementing up the times they guessed
guessField.value = '';
guessField.focus();//returns blinking cursor to guessField
}//end checkGuess function
guessSubmit.addEventListener('click', checkGuess);
//if they click submit button, run the checkGuess()
document.addEventListener('keyup', function (event) {
//tell document to listen for a 'keyup event
if (event.which === 13) {
// which event is it? 13 is the enter key, if so, fire the checkGuess function
checkGuess();
}
});
console.log(randomNumber);
function setGameOver(){
guessField.disabled = true;
guessSubmit.disabled = true;
resetButton = document.createElement('button');
resetButton.textContent = 'Start new game';
document.body.appendChild(resetButton);
resetButton.addEventListener('click', resetGame);
}
function resetGame(){
guessCount = 1;
var resetParas = document.querySelectorAll('.resultParas p');
//creates an array from the 3 <p>s
for (var i = 0; i < resetParas.length ; i++){
//for three loops, go thru th p's [i] and empty them
resetParas[i].textContent = '';
}
resetButton.parentNode.removeChild(resetButton);
//son tells the parent to remove the son, himself
guessField.disabled = false;//makes the guessField active again
guessSubmit.disabled = false;
guessField.value = '';
guessField.focus();
lastResult.style.backgroundColor = 'white';
randomNumber = Math.floor(Math.random() * 100) +1;
}
</script>