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