Как я могу выполнить функцию только один раз? - PullRequest
0 голосов
/ 25 мая 2018

Например, у меня есть функция

Question.prototype.checkAnswer = function(answer1, answer2) {
   if (answer1.innerHTML  == this.correctAnswer) {
    console.log("correct");
    players1.moveCharacter = true;
    pointAmount+= 1;
    point.innerHTML = pointAmount;
  } else {
    console.log("nope")
  }
}

, если ответ правильный, id добавляет 1 балл к общему количеству баллов.Но проблема в том, что если я не перейду к следующему вопросу в массиве и просто продолжу нажимать кнопку ответа, я продолжаю получать очки столько, сколько я хочу, прежде чем я решу перейти к следующему вопросу.Как я мог это исправить, чтобы только один раз я мог ответить на вопрос и получить только одно очко за это.Я полагаю, почему-то мне нужно убедиться, что функция запускается только один раз?

Это, вероятно, можно решить довольно легко, но я новичок и ничего не могу придумать.

Ответы [ 2 ]

0 голосов
/ 25 мая 2018

Вы также можете проверить, есть ли pointAmount > 0, прежде чем начислять еще какие-либо очки.

0 голосов
/ 25 мая 2018

Вы можете использовать простой флаг и установить его на true после вызова функции.

function Question() {}

Question.prototype.checkAnswer = function(answer1, answer2) {
   
  if(this.answerChecked)
    return; // If answer was already checked, leave.
  
  this.answerChecked = true;
 
  // The rest of your code
  console.log('Run');
}

const question = new Question();

question.checkAnswer('yes', 'no');
question.checkAnswer('again', 'no'); // This will do nothing
...