@el_jey

Как прервать проверки в JavaScript?

Только начал практиковаться в JS. Нашёл код, который загадывает загадки и выдаёт "Верно/Неверно". Немного его модифицировал, сделал подсчёт правильных и неправильных ответов. Теперь хочу сделать следующее: чтобы при каком-то количестве неверных ответов(допустим, 1), все остальные загадки не появлялись. Думал обернуть всё в цикл while, но получается много уровней вложенности, что нехорошо. Ставил label в конец скрипта, но функция проверки(сейчас закомментирована) её отказывается видеть(пишет undefined). Есть какой-то метод прервать скрипт?
<!DOCTYPE html>
<html>
<head>
<meta charset = "utf-8">
</head>
<body>
<script>

var correct = 0;
var wrong = 0;

var a= prompt("Люди бывают фиолетовыми? Да / Нет ").toLowerCase();
  if (a == 'нет') {
    alert ("Верно!");
     correct++;
  }
  else {
    alert("Неверно!");
     wrong++;
  }
  
var b = prompt ("Висит груша нельзя скушать?").toLowerCase();
  if (b== "лампа" || b== "лампочка") {
    alert ("Верно!");
     correct++;
    }
    else {
      alert ('Неверно!');
       wrong++;
    }

var c= prompt ("Идет то в гору, то с горы, но остается на месте").toLowerCase();
 if (c == 'дорога') {
    alert ("Верно!");
     correct++;
  }
  else {
  alert('Неверно!');
   wrong++;
  }
  
alert('Верных ответов: ' + correct + '\n' +  'Неверных ответов: ' + wrong);

/*function breakProgram() {
 if (wrong = 1) {
  alert('Вы исчерпали лимит неверных ответов' + '\n' + 'Верных ответов: ' + correct + '\n' + 'Неверных ответов: ' + wrong);   
 }   
 return true;
}
*/
</script>
</body>
</html>
  • Вопрос задан
  • 344 просмотра
Решения вопроса 1
shmatuan
@shmatuan
8 year of Web, 5 years of Vue
Немного сдожно для начинающего, но варианты с вашим кодом - только вручную прописывать условие
var correct = 0;
var wrong = 0;
var questions = [ // без объектов и массивов в js никуда, так что лучше сразу с них и начинайте
{
  q: "Люди бывают фиолетовыми? Да / Нет",
  correct: ["нет"]
},
{
  q: "Висит груша нельзя скушать?",
  correct: ["лампа", "лампочка" ]
},
{
  q: "Идет то в гору, то с горы, но остается на месте?",
  correct: ["дорога" ]
},
]

questions.forEach(q => { // проходим каждый
if (wrong >= 2) { alert('Верных ответов: ' + correct + '\n' +  'Неверных ответов: ' + wrong); return; }

  var b = prompt (q.q).toLowerCase();
  if (q.correct.find(e => e === b)) { // ищем совпадение в правильных ответах
    alert ("Верно!");
     correct++;
    }
    else {
      alert ('Неверно!');
       wrong++;
    }

})

alert('Верных ответов: ' + correct + '\n' +  'Неверных ответов: ' + wrong);


upd: В комментах вариант с минимальными изменениями кода
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@dimoff66
Кратко о себе: Я есть
Самый простой - обернуть в функцию и сделать в нужный момент return

Но лучше отказаться от хардкодинга, сделать массив с вопросами и ответами и пройтиссь по ним в цикле. Уровень вложенности - один единственный.
Ответ написан
politon
@politon
HTML5,CSS3,JS,PHP,SQL,API,canvas,animation...
Вот вариант с выводом вопросов-ответов в массиве
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы