#javascript #dom #dom-events #event-listener #keydown
#javascript #dom #dom-события #прослушиватель событий #нажатие клавиши
Вопрос:
Я на самом деле практикуюсь с прослушивателем событий. Я пытаюсь сделать очень простую игру, в которой появляется стрелка, и пользователь сопоставляет ее на клавиатуре. Если это правильно, оценка увеличивается, а если это не так, оценка сбрасывается.
Это работает нормально, но когда стрелка не совпадает, оператор if, который сбрасывает оценку, не срабатывает, и вместо этого оценка увеличивается.
Вот мой код (прошу прощения, он не чистый)
const fleche = document.querySelector('.fas');
const showScore = document.querySelector('#score');
window.addEventListener('keydown',compare);
let score = 0;
let jet = 0;
showScore.innerHTML=`Score : ${score}`;
function jetdes(){
jet = Math.floor(Math.random()*4 1);
randomArrow();
}
function randomArrow(){
switch (jet) {
case 1:
fleche.classList.remove('fa-arrow-up','fa-arrow-down','fa-arrow-left','fa-arrow-right');
fleche.classList.add('fa-arrow-up');
break;
case 2:
fleche.classList.remove('fa-arrow-up','fa-arrow-down','fa-arrow-left','fa-arrow-right');
fleche.classList.add('fa-arrow-down');
break;
case 3:
fleche.classList.remove('fa-arrow-up','fa-arrow-down','fa-arrow-left','fa-arrow-right');
fleche.classList.add('fa-arrow-left');
break;
case 4:
fleche.classList.remove('fa-arrow-up','fa-arrow-down','fa-arrow-left','fa-arrow-right');
fleche.classList.add('fa-arrow-right');
break;
}}
function compare(e){
if(e.code='ArrowUp' amp;amp; jet === 1){
score ;
showScore.innerHTML=`Score : ${score}`;
console.log(1);
jetdes();
}
else if(e.code='ArrowDown' amp;amp; jet === 2){
score ;
showScore.innerHTML=`Score : ${score}`;
console.log(2);
jetdes();
}
else if(e.code='ArrowLeft' amp;amp; jet === 3){
score ;
showScore.innerHTML=`Score : ${score}`;
console.log(3);
jetdes();
}
else if(e.code='ArrowRight' amp;amp; jet === 4){
score ;
showScore.innerHTML=`Score : ${score}`;
console.log(4);
jetdes();
}
else {
score = 0;
showScore.innerHTML=`Score : ${score}`;
console.log(5);
jetdes();
}
}
jetdes();
Я знаю, что это, вероятно, очевидная ошибка, но я некоторое время ломал голову над этим.
Спасибо!
Комментарии:
1. внутри ваших операторов if это должно быть
e.code == 'Arrow...'
вместоe.code='Arrow...'
2. Классический. Большое вам спасибо.