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

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

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.