我正在尝试创建一个数组,因此在测验中存储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++;
}
答案 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
。