如何只执行一次函数?

时间:2018-05-24 23:52:44

标签: javascript arrays function increment

例如我有一个功能

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 :(得分:5)

您可以使用简单标志,并在调用该函数后将其设置为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

答案 1 :(得分:1)

您还可以在授予更多积分之前检查是否pointAmount > 0