2012-09-12 73 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在哪裏?你能把它包括在那個小提琴中嗎? –