Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/405.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 获得;空";来自上一个输入之前的值的数组中的值_Javascript - Fatal编程技术网

Javascript 获得;空";来自上一个输入之前的值的数组中的值

Javascript 获得;空";来自上一个输入之前的值的数组中的值,javascript,Javascript,我正在尝试创建一个数组,因此存储1表示测验中的正确答案,存储0表示测验中的错误答案。在下一个问题中,我能够获得数组中的“1”或“0”值。然而,之前的问题给了我空值 例如,当我完成问题1并尝试问题2时 我的数组=[1]。 当我完成问题2并尝试问题3时 我的数组=[NULL,1]。 相反,我应该得到[1,1]。假设两个答案都是正确的。这一直持续到我的最后一个问题[null,null,null,null,1]。 请检查我的密码,并告诉我我的错误。我要做的是检查答案是否正确,如果正确,我将在数组中插入1

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

例如,当我完成问题1并尝试问题2时 我的数组=[1]。 当我完成问题2并尝试问题3时 我的数组=[NULL,1]。 相反,我应该得到[1,1]。假设两个答案都是正确的。这一直持续到我的最后一个问题[null,null,null,null,1]。 请检查我的密码,并告诉我我的错误。我要做的是检查答案是否正确,如果正确,我将在数组中插入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++;
}你的问题是

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 = [];