从上一个输入之前的值获取数组中的“null”值

时间:2018-02-26 06:07:29

标签: javascript

我正在尝试创建一个数组,因此在测验中存储1以获得正确答案,在测验中存储0表示错误答案。我可以在下一个问题中获得数组中的“1”或“0”值。然而,之前的问题给了我无效值。

例如,当我完成问题1并尝试问题2时 我的数组= [1]。 当我完成问题2并尝试问题3时 我的数组= [NULL,1]。 相反,我应该收到[1,1]。假设所有答案都是正确的。这一直持续到我的上一个问题[null,null,null,null,1]。 请检查我的代码并告诉我我的错误。我正在做的是检查答案,如果它是正确的,如果它是我将插入数组如果不是我将插入一个0.这个测验共有5个问题。 “questionIndex”是问题编号

 Quiz.prototype.guess = function(answer) {
var array = [];
i = this.questionIndex;
if(this.getQuestionIndex().isCorrectAnswer(answer)) {
    array[i] = 1;   
    this.score++;
}
else{
    array[i] = 0;
}
var myJSON = JSON.stringify(array);
document.getElementById("demo").innerHTML =myJSON;
this.questionIndex++;

}

2 个答案:

答案 0 :(得分:1)

你的问题是

var array = [];

因为您要在每个guess之前清理数组。

您可以将此行放在数组之外,或者将此行替换为

var existingGuess = document.getElementById("demo").innerHTML; //take the guess from the previously shown JSON
var array = [];
try
{
   array = JSON.parse( existingGuess );  
}
catch(){}

答案 1 :(得分:0)

您可以为var array = []对象创建array属性,然后为其附加值,而不是使用本地范围创建数组对象Quiz。这将阻止每次运行函数时覆盖array变量。请尝试下面的代码。

Quiz.prototype.guess = function(answer) {
  if (!this.array) this.array = [];
  i = this.questionIndex;
  if (this.getQuestionIndex().isCorrectAnswer(answer)) {
    this.array[i] = 1;
    this.score++;
  } else {
    this.array[i] = 0;
  }
  var myJSON = JSON.stringify(this.array);
  document.getElementById("demo").innerHTML = myJSON;
  this.questionIndex++;

}

我已经取代了

var array = [];

if (!this.array) this.array = [];

这将创建this.array属性(如果它不存在)并初始化为空数组。然后,我已将array的所有后续使用替换为this.array