Как я могу выполнить функцию только один раз?

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

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")
 }
}

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

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

2 ответа

Вы можете использовать простой флаг и установить его в 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


Вы также можете проверить, будет ли pointAmount > 0 прежде чем pointAmount > 0 больше очков.

licensed under cc by-sa 3.0 with attribution.