Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/470.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_Arrays_Json_Undefined - Fatal编程技术网

Javascript 为什么我的输出没有定义?

Javascript 为什么我的输出没有定义?,javascript,arrays,json,undefined,Javascript,Arrays,Json,Undefined,我用Javascript和HTML编写了一个测验。对于统计数据,我想创建一个包含问题、用户答案和正确答案的表 是否有一个问题的多选答案,我得到一个未定义的输出,而不是用户的答案 为什么我通过多项选择答案得到未定义的输出?只有一个答案的问题是完美的 我的代码: $(function() { var quiz = []; var items = localStorage.getObject('tipkit'); $.getJSON('api/quiz.json', function(

我用Javascript和HTML编写了一个测验。对于统计数据,我想创建一个包含问题、用户答案和正确答案的表

是否有一个问题的多选答案,我得到一个未定义的输出,而不是用户的答案

为什么我通过多项选择答案得到未定义的输出?只有一个答案的问题是完美的

我的代码:

$(function() {

  var quiz = [];
  var items = localStorage.getObject('tipkit');

  $.getJSON('api/quiz.json', function(data) {
    $.each(data.questions, function(i, f) {
      var tblRow = 
        "<tr>" + 
          // question id
          "<td>" + f.id + "</td>" +
          // question
          "<td>" + f.question + "</td>" +
          //user answers (id's and text)
          "<td>" + items['quest' + f.id] + ": " + f.answers[items['quest'+f.id]] + "</td>" + 
          //correct answers (id's and text)
          "<td>" + f.correct + ": " + f.answers[f.correct] + "</td>" + 
        "</tr>";
      $(tblRow).appendTo(".table tbody");
    });
  });

});
本地存储

key: tipkit
value: {"quest1":["1"], "quest2":["2","3"]}
这条线正在制造问题。由于
“1,3”
不会解析为
答案的索引。这就是为什么
f.answers[f.correct]
返回
undefined

您可以使用此方法获得多个答案:

function getMultipleAnswers(answers, indexes)
{
    var selectedAnswers = new Array();
        var indexe_array = indexes.split(',');
    for(var i = 0; i < indexe_array.length; i++)
    {
      selectedAnswers.push(answers[indexe_array[i]]);
    }
    return selectedAnswers;
}
函数getMultipleAnswers(答案、索引) { var selectedAnswers=新数组(); var indexe_数组=index.split(','); 对于(var i=0;i
注意:

$(function() {

  var quiz = [];
  var items = localStorage.getObject('tipkit');

  $.getJSON('api/quiz.json', function(data) {
    $.each(data.questions, function(i, f) {
      var tblRow = 
        "<tr>" + 
          // question id
          "<td>" + f.id + "</td>" +
          // question
          "<td>" + f.question + "</td>" +
          //user answers (id's and text)
          "<td>" + items['quest' + f.id] + ": " + f.answers[items['quest'+f.id]] + "</td>" + 
          //correct answers (id's and text)
          "<td>" + f.correct + ": " + f.answers[f.correct] + "</td>" + 
        "</tr>";
      $(tblRow).appendTo(".table tbody");
    });
  });

});
当我们将JavaScript对象存储到
HTML5 localStorage
中时,它将
JSON对象
转换为
JSON字符串

var jsonObj={“quest1”:[“1”],“quest2”:[“2”,“3”]};
log('typeof jsonObj:'+typeof jsonObj);
//将该对象放入存储器
setItem('tipkit',jsonObj);
//从存储器中检索对象
var retrievedObject=localStorage.getItem('tipkit');

log('typeof retrievedObject:'+typeof retrievedObject)添加api返回的json以及存储在其中的数据localstorage@FadiAboMsalam在json文件中有问题,在localstorage中我保存了来自用户的答案。我理解这一点,但我需要查看json文件structure@FadiAboMsalamsry,我已经编辑了我的question@Mr.Dev你检查我的答案了吗?它适用于“正确答案”列,但不适用于“用户答案”列。我得到一个错误:Uncaught TypeError:indexes.split不是一个函数我对它进行字符串化和解析,但输出是相同的。您可以在我的答案中检查代码片段。它按照您的期望工作。var items现在是:var items=JSON.parse(localStorage.getItem('tipkit');我用这行localStorage.setItem('tipkit',JSON.stringify(items)),将答案保存在本地存储中;我得到了与更改前相同的输出扫描您请提供plnkr url,以便我可以查看您的代码。
function getMultipleAnswers(answers, indexes)
{
    var selectedAnswers = new Array();
        var indexe_array = indexes.split(',');
    for(var i = 0; i < indexe_array.length; i++)
    {
      selectedAnswers.push(answers[indexe_array[i]]);
    }
    return selectedAnswers;
}