2012-09-12 30 views
0

我有以下的测试程序:http://dev.driz.co.uk/quiztest/通过JSON数据一次一个循环

的想法是,一系列网页将各自具有具有测验页例如的部分数一个div 1,然后从该部分的JSON文件中提取问题。

这部分我有工作要感谢SO社区的帮助,为了清晰起见,我创建了一个新问题来处理这些单独的问题。

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

ul一次只有一个问题将在#questions UL为用户回答。

一旦显示了一节的所有问题,我就需要回调完成的函数,以便我可以做一些额外的逻辑。

我该如何做到最好?我想我需要先计算该部分中的问题数量,然后进行增量以找到结果。谁能帮忙?

编辑:我打算做类似于:Question 3/10所以得到这个数字是相当重要的,看起来似乎。但我困惑得到下一个问题后先等等,以此类推,直到然后结束部分的...

感谢

+0

你有没有尝试过实现这一点,或者你卡在伪代码阶段? –

+0

@Cameron stackoverflow用户正在编写你的整个应用程序。 –

+0

@Cameron嗯,我已经发布了一个应该如何工作的粗略大纲的答案。您仍然需要实施自己的合理数量,我不知道它有多准确,但它应该是一个很好的起点。 –

回答

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()函数。

+0

@Cameron你不会循环,你会从你的JSON中存储结果对象并且一次调用这个函数显示第一个问题,然后选择回答以显示下一个问题。我不想过分详细,故意避免看看你实际已经拥有了什么,因为我认为如果你必须为自己编写大部分代码,你会学到更多东西。 –

+0

这就是我放在一起的地方:http://pastebin.com/wEBYJeHU我认为我做错了吗?如果我没有通过它循环,我将如何获取数据?目前我只是马上完成完成的方法。 – Cameron

+0

@Cameron最大的问题是你的问题目前被存储在一个对象中,而该对象的键以'1'开头,而不是存储在0索引数组中。如果你可以,我会改变JSON,因为一个数组对此更有意义。 –

2

我嘲笑那个网站在小提琴里。我不知道这是不是你正在寻找的。也许有更多的解释,我可以更接近它。 Fiddle

+0

功能非常完美!但是它应该从JSON中提出问题,然后对问题进行计数,以便当它回到最后一个问题时,它就会触发完成的方法。 – Cameron

+0

json在哪里?你能把它包括在那个小提琴中吗? –