2014-11-09 59 views
0

對於一個小的,學習語言(JavaScript)更好的項目,我想創建一個簡單的測驗Web應用程序。我有兩個問題:自動生成測驗問答JavaScript應用程序:我需要數據庫嗎?

  1. 如果我的問題和答案永遠是相同的,我創建僅使用多項選擇題測驗的應用程序(我想我會使用選擇單選按鈕),我做需要一個數據庫?或者我可以簡單地將所有問題和答案編碼成一個main.js文件中的對象數組?

每個對象都有一個問題,四個選項答案和正確的答案。然後,這是一個簡單的if語句,用於將選擇與正確答案進行比較。

請問這主要是因爲恐怕會是一個安全問題,不使用一個數據庫,但我想不出爲什麼,因爲用戶不會屈服於任何事情。

  1. 更進一步:爲了讓它更具動態性,我可以使用對象動態生成問題和潛在答案,而不是寫出每一個問題和答案。

假設我有一個足球隊隊列對象列表。在每個團隊對象的內部,我列出了職位和玩家的名字。有些職位有多個球員。然後我有一個單獨的對象充滿了問題。

難道我設置的問題隨機數反對隨機生成一個問題,然後有知道什麼時候產生這個問題,從我的目標只有這些特定的鍵值配對可以適合作爲回答一些邏輯?

E.g.如果問題是,「哪一個是曼聯的後衛?」它會隨機抽取一名曼聯後衛,並隨機將剩下的三個選項與其他球隊的後衛填補。

每次我嘗試它邏輯地寫出來,我得到這麼混亂,我認爲我不好接近這一點。

感謝和遺憾的菜鳥問題!

回答

0

如果你的問題和答案將永遠是相同的比你一定能夠跳過數據的基礎上,並使用陣列例如內問題對象,

var myQuestions= [{ 
//your question-answer details goes here - key value pair 
}]; 

,每一個新的用戶來帶試驗採用隨機方法時, (建立在JS方法)從問題數組中獲取問題。

+0

謝謝!正是我需要聽到的! – ObbyOss 2014-11-10 02:03:12

+0

接受,如果它工作 – 2014-11-12 08:46:25

0

關於安全問題,你所說的「用戶不會提交任何東西」是什麼意思?他們會提交答案,對嗎?或者你的意思是用戶的答案不會被存儲,而是在客戶端本身顯示答案的反饋?此外,如果您存儲選擇題的選項有一個標記爲在js文件的答案,用戶可以從瀏覽器檢查的js文件的內容&結識了答案。

+0

我的意思是他們不會輸入自己的答案。我想通過單選按鈕發送信息。 有什麼辦法來阻止他們檢查JS文件,而無需將其託管在數據庫上?這不是什麼大問題,因爲測驗只是爲了好玩。但都一樣。謝謝!! – ObbyOss 2014-11-10 02:05:31

0
  1. 我在假設您的安全問題意味着用戶能夠通過閱讀您的腳本知道答案。任何「客戶端」的東西永遠都不會安全。例如:將您的答案存儲在JS腳本中並將其加載到客戶端的瀏覽器中。

  2. 製作「團隊」等對象需要您在測驗應用程序中實施智能,以便知道哪個問題與哪個對象共同相關,並區分正確答案和錯誤答案。這並非不可能,但並非微不足道。爲了避免大量的複雜的,你可以把它作爲這樣的:

    /* Javascript array to store object sets of question, right answers, and wrong answers */ 
    var quizObj = [{ 
         "question": "Which of the following is MU's defender?", 
         "right": ["Marcos Rojo", "Luke Shaw", "Tyler Blacket"], 
         "wrong": ["Vincent Kompany", "Dejen Lovren", "Javi Manquillo", "Mathieu Debuchy", "Calum Chambers"] 
    }]; 
    
    /* Function to get a random index in an array */ 
    function getRandomIndex(array) { return Math.floor(Math.random()*array.length); } 
    
    /* Please apply your proper looping here */ 
    var current = quizObj[0]; 
    
    /* To get a random right answer: */ 
    var rightAnswer = current.right[getRandomIndex(current.right)]; 
    
    /* To get wrong answers which is unique: */ 
    var tempWrong = current.wrong.slice(); // Clone the array because splice will change the original array (and that is why we can make the output unique) 
    
    /* Get the random answer and remove it from the temporary array */ 
    var wrongAnswer1 = tempWrong.splice(getRandomIndex(tempWrong), 1)[0]; 
    var wrongAnswer2 = tempWrong.splice(getRandomIndex(tempWrong), 1)[0]; 
    var wrongAnswer3 = tempWrong.splice(getRandomIndex(tempWrong), 1)[0]; 
    
+0

這裏是一個小提示給你隨機選擇正確和錯誤的答案:http://jsfiddle.net/6w98wr8s/ – 2014-11-09 10:53:43

+0

哇,夢幻般的答案謝謝你! 我的安全問題只是擔心有人可以永久改變JS文件。但我想不出他們會採取合理的方式。我只是想確認一下。 我真的很感謝你把它放在一起。我認爲你是對的:這太複雜了。我只需要輸出每一個血腥的問題。這裏有幾個小時的工作!謝謝!! – ObbyOss 2014-11-10 02:04:33

+0

不要他們永遠無法修改你的JS文件,而無需獲得對你的文件系統(比如FTP)的寫權限。別客氣 :) – 2014-11-11 05:36:51

相關問題