I decided to begin javascript projects based on my understanding of it so far. I called a function within itself and suddenly my counters aren’t adding up as expected during an if-else condition. It does work well when you don’t make a mistake but if you do and attempt to keep running it, the numbers begin to multiply instead of add. Here is my code:
JavaScript:
const myInput = document.querySelector(’.myInput’)
const message = document.querySelector(’.message’)
const attempts = document.querySelector(’.attempts’)
const progress = document.querySelector(’.progress’)
const question = document.querySelector(’.question’)
const rightScore = document.querySelector(’.rightScore’)
const wrongScore = document.querySelector(’.wrongScore’)
let rightAnswer = 6
let bullsEye = 0
let badMiss = 0
let tries = 0
// Using ‘Enter Key’
function loopIt(){
myInput.value = ‘’
myInput.addEventListener(‘keyup’, function(e){
progress.style.display = ‘block’
question.style.display = ‘none’
if(e.key == ‘Enter’){
let mySubmission = myInput.value
tries++
attempts.innerHTML = tries
if (mySubmission == rightAnswer){
bullsEye++
rightScore.innerHTML = bullsEye
message.innerHTML = ‘good job’
setTimeout(function(){
loopIt(mySubmission)
}, 1500)
return
} else {
badMiss++
wrongScore.innerHTML = badMiss
message.innerHTML = ‘try again’
return
}
}
})
}
HTML:
Magic Number<link rel="stylesheet" href="/style.css">
<div>
<p class="question">
Can you guess the number behind this game? Clue: it is between 1 and 10
</p>
<input type="text" class = "myInput">
<p class="message"></p>
<p class = "progress">Attempts: <span class = "attempts"> ~ </span> | Correct: <span class="rightScore"> ~ </span> | Incorrect: <span class="wrongScore"> ~ </span></p>
</div>
<script src="/script.js" defer></script>
CSS
*{
text-align: center;
font-family: “Benton Sans”, “Helvetica Neue”, helvetica, arial, sans-serif;
margin: 2em;
}
input{
margin-top: 7%;
padding: 12px;
width: 25rem
}
.attempts{
font-style: bold
}
.rightScore {
color: green
}
.wrongScore {
color: red
}
.progress {
display: none;
}
. Looking forward to getting this right so I could continue.