Javascript 获得;空";来自上一个输入之前的值的数组中的值
我正在尝试创建一个数组,因此存储1表示测验中的正确答案,存储0表示测验中的错误答案。在下一个问题中,我能够获得数组中的“1”或“0”值。然而,之前的问题给了我空值 例如,当我完成问题1并尝试问题2时 我的数组=[1]。 当我完成问题2并尝试问题3时 我的数组=[NULL,1]。 相反,我应该得到[1,1]。假设两个答案都是正确的。这一直持续到我的最后一个问题[null,null,null,null,1]。 请检查我的密码,并告诉我我的错误。我要做的是检查答案是否正确,如果正确,我将在数组中插入1,如果不正确,我将插入0。本次测验共有5个问题。“questionIndex”是问题编号Javascript 获得;空";来自上一个输入之前的值的数组中的值,javascript,Javascript,我正在尝试创建一个数组,因此存储1表示测验中的正确答案,存储0表示测验中的错误答案。在下一个问题中,我能够获得数组中的“1”或“0”值。然而,之前的问题给了我空值 例如,当我完成问题1并尝试问题2时 我的数组=[1]。 当我完成问题2并尝试问题3时 我的数组=[NULL,1]。 相反,我应该得到[1,1]。假设两个答案都是正确的。这一直持续到我的最后一个问题[null,null,null,null,1]。 请检查我的密码,并告诉我我的错误。我要做的是检查答案是否正确,如果正确,我将在数组中插入1
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++;
}你的问题是
var array = [];
因为您在每次猜测之前都要清除数组
您可以将此行从数组中移出,也可以将此行替换为
var existingGuess = document.getElementById("demo").innerHTML; //take the guess from the previously shown JSON
var array = [];
try
{
array = JSON.parse( existingGuess );
}
catch(){}
您可以为
quick
对象创建array
属性,然后向其附加值,而不是创建具有本地作用域的数组对象var 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 = [];
与
如果
This.array
属性不存在,则会创建该属性,并初始化为空数组。然后我将所有后续使用的array
替换为this.array
嗨,我试过了,它不起作用。整个脚本无法运行。@alexvin请共享一个演示此问题的工作片段。我尝试放置var数组=[];在功能之外,它可以工作。谢谢你指出问题所在mistake@alexvin很高兴它对你有用。但是,我建议不要污染全局范围,将数组作为quick
对象本身的一部分。
if (!this.array) this.array = [];