我有以下 JSON:
var questions = {
section: {
"1": question: {
"1": {
"id" : "1a",
"title": "This is question1a"
},
"2": {
"id" : "1b",
"title": "This is question2a"
}
},
"2": question: {
"1": {
"id" : "2a",
"title": "This is question1a"
},
"2": {
"id" : "2b",
"title": "This is question2a"
}
}
}
};
注意:JSON 根据以下答案进行了更改,以更好地支持该问题,因为原始 JSON 格式错误以及它如何与下面的 for 循环一起使用。
完整的 JSON 将有 8 个部分,每个部分将包含 15 个问题。
这个想法是 JS 代码将读取要拉出的部分,然后从列表中一一拉出问题。在第一次加载时,它将拉出第一个问题,然后当用户单击选项 A 或 B 的按钮时,它将加载下一个问题,直到所有问题都被拉出,然后进行回调。
当单击附加列表项中的按钮时,它会将其添加到下面称为响应的列表中,其中用户给出的答案作为跨度标记。
这是我到目前为止所拥有的:
function loadQuestion( $section ) {
$.getJSON('questions.json', function (data) {
for (var i = 0; i < data.length; i++) {
var item = data[i];
if (item === $section) {
$('#questions').append('<li id="' + item.section.questions.question.id + '">' + item.section.questions.question.title + ' <button class="btn" data-response="a">A</button><button class="btn" data-response="b">B</button></li>');
}
}
});
}
function addResponse( $id, $title, $response ) {
$('#responses').append('<li id="'+$id+'">'+$title+' <span>'+$response+'</span></li>');
}
$(document).ready(function() {
// should load the first question from the passed section
loadQuestion( $('.section').data('section') );
// add the response to the list and then load in the next question
$('button.btn').live('click', function() {
$id = $(this).parents('li').attr('id');
$title = $(this).parents('li').html();
$response = $(this).data('response');
addResponse( $id, $title, $response );
loadQuestion ( $('.section').data('section') );
});
});
以及页面的 HTML(每个页面都是单独的 HTML 页面):
<div class="section" data-section="1">
<ul id="questions"></ul>
<ul id="responses"></ul>
</div>
我已经被如何只从一个部分中获取第一个问题然后连续加载该部分的每个问题直到所有问题都被调用然后进行回调以显示该部分已完成而感到困惑和困惑。
谢谢