2012-08-14 25 views
2

我正嘗試在使用HTML和JavaScript的網頁上創建測驗。每個問題(有4個選項可供選擇)是一個單獨的html文件,但使用相同的JavaScript文件來評估輸入的選項是對還是錯。在頁面之間存在JavaScript值

但是,我正在努力尋找一種方法來跟蹤用戶提供的正確答案的數量來計算他/她的分數。

有沒有一種方法在JavaScript中創建靜態或靜態變量?涉及cookie的解決方案也受到讚賞。

+1

[GET請求之間的持久性javascript變量?](http://stackoverflow.com/questions/1253821/persist-javascript-variables-between-get-requests)和[在頁面上持久化javascript變量?]( http://stackoverflow.com/q/1981673/218196)和[使用javascript在兩頁之間保留值](http://stackoverflow.com/q/2477784/218196)---請在使用earch之前問你新問題。 – 2012-08-14 14:28:00

回答

5

一個可能的解決方案是從您的問題文件中加載HTML到父頁面,但在該頁面上有整個測驗。這樣,您仍然可以靈活地爲每個問題提供不同的頁面,但對瀏覽器來說,它們都是一個頁面。此外,在Javascript中創建或分發的所有變量將在整個測驗中持續存在。

這對使用Jquery的.load函數很容易。您的頁面中間有一個div,可以從您導航到的任何HTML頁面加載其內容。

請記住,進入Javascript並改變正確答案的數量非常簡單。事實上,任何客戶端解決方案都存在這個問題。如果這不僅僅是有趣,並且準確性很重要,您可能希望在每個問題後將結果發送回服務器。這樣,無論您如何實施測驗,結果都會堅持到最後。

+0

我試圖保持它相當簡單,因爲我是Javascript新手。因此,我會盡可能避免在服務器端做事情。謝謝你的意見。我會研究這一點。 – passmaster10 2012-08-14 14:34:19

+0

@ user1598264然後,我建議堅持使用單頁面應用程序。你可以保持它不比$('#question-box')更復雜。load(「q」+ questionNumber +「.html」);'它可以讓你只處理一個頁面的Javascript範圍 – 2012-08-14 14:36:32

1

您可以將數據保存在cookie中。但是用戶可以更改cookie併產生更好的結果。在這種情況下使用會話是一個更好的選擇。因爲無論你在客戶端存儲的是不安全的。

但是這是更好地得到JSON格式的問題與XHR並在瀏覽器中顯示出來,並保持跟蹤在內存

0

這些天,我將專注於使之成爲一個單頁的應用程序,而不是依靠頁面加載。這不僅具有解決您的問題的優勢,而且還意味着對用戶的響應速度更快,體驗更快。

如果您必須使用頁面轉換,並且您只願意使用現代瀏覽器,請查看localStorage。比Cookie更容易使用和更靈活 - 它就像序列化的JavaSCript對象一樣工作。

0

這是http://rhaboo.org的情況。看看這個小提琴:

http://jsfiddle.net/rhaboo/qp6zsnmx/6/

正如你可以看到,整個測驗僅僅是問題,其中有一些答案數組,這些問題的答案是通過點擊它們改變。這是測試數組生活在由rhaboo提供的持久對象內的所有持久性因素。從非持久性代碼唯一的區別是,你在哪兒通常會寫:

store.test[i].chosen = j; 

你必須寫:

store.test[i].write('chosen', j); 

代替。順便說一下,我寫了rhaboo。