一次循环一个JSON数据

时间:2012-09-12 12:44:20

标签: javascript jquery json

我有以下测试应用:http://dev.driz.co.uk/quiztest/

这个想法是,一系列网页每个都有一个div,其中包含测验页面的节号,例如1然后从该部分的JSON文件中提取问题。

这一部分我的工作得益于SO社区的帮助,所以为了清楚起见,我已经创建了一个新问题来处理这些独立的问题。

我遇到的问题是我只希望第一个问题出现在页面加载的一个部分,然后当用户点击A或B按钮时,它需要加载下一个问题,所以显示问题2,然后3等等......

一次只有一个问题会在#questions ul中供用户回答。

一旦显示了一个部分的所有问题,我就需要对完成的函数进行回调,这样我就可以做一些额外的逻辑。

我最好怎么做呢?我想我需要首先计算该部分中的问题数量,然后进行增量以找到结束。有人可以帮忙吗?

编辑:我计划做类似的事情:Question 3 / 10所以获得这个数字看起来非常重要。但我对在第一个问题之后得到下一个问题感到困惑,依此类推,直到该部分结束......

由于

2 个答案:

答案 0 :(得分:2)

我嘲笑那个网站是什么小提琴。我不知道这是不是你想要的。也许有更多解释我可以更接近。 Fiddle

答案 1 :(得分:1)

假设您有一个包含您问题的数组。每个问题都是一个对象,带有question键和answers键。 question将始终是包含问题文本的字符串。 answers将是一个包含0个或更多任何类型元素的数组,表示问题的可选答案。

var questions = [
    {question : 'What is 2 + 2?', answers : [4, 5, 6]}, 
    {question : 'What is 6 * 4?', answers : [20, 24, 28]}
];

现在让我们编写一个显示问题的函数。我们将使用一个全局变量来存储要显示的问题的索引(初始化为0以显示第一个问题):

var currentQuestion = 0;

function displayQuestion() {
    if(currentQuestion < questions.length) { // if there's still questions to display
        var question = questions[currentQuestion]; // get the question to display
        var questionHtml = ...; // generate the HTML for the question here
        $('#questions').html(questionHtml);
        currentQuestion += 1; // increase tracking index
    }
    else {
        finished();
    }
}

然后,您只需将click事件处理程序绑定到按钮即可调用displayQuestion()函数。