2014-03-07 42 views
2

我新的Javascript和需要幫助使人格測驗就像一個你會發現在來自Buzzfeed(EG:http://www.buzzfeed.com/justinabarca/which-goonies-character-are-you的Javascript人格測驗

我想創建一個表單,需要一個用戶輸入和計算,由添加用戶輸入的相應字符[x] AnswerArray值,這是他們最喜歡的字符。

我有一個二維數組,存儲每個問題和每個問題的每個答案。

var questionArray = [ 
        ["Question 1?", "Answer 1", "Answer 2", "Answer 3"], 
        ["Question 2?", "Blue", "Green", "Red"], 
        ["Question 3?", "Blue", "Green", "Red"], 
        ["Question 4?", "Blue", "Green", "Red"], 
        ["Question 5?", "Blue", "Green", "Red"], 
        ["Question 6?", "Blue", "Green", "Red"] 
       ]; 

我在一個 「FOR-NEXT」 迭代顯示此:

for (var i = 0; questionArray.length; i++){ 
document.write("<span class='question'>" + questionArray[i][0] + "</span><br/><br/>"); 
for (var x = 1; x < 4; x++){ 
    document.write("<input type='radio' class='answer' name='answer' value='" + questionArray[i][x] + "'>" + questionArray[i][x] + "<br/><br/>"); 
} 

我還具有用於每個可能的二維陣列(在此情況下,字符):

var characterOneAnswerArray = [ 
        ["0, 1, 4"], 
        ["2, 3, 6"], 
        ["1, 3, 0"], 
        ["2, 4, 5"], 
        ["0, 0, 1"] 
       ]; 

這裏是我卡住的地方。如何跟蹤(存儲)用戶輸入(答案),然後將其添加到每個角色總數中,然後最終計算哪個角色得分最高?

如果你不明白我的意思,請告訴我

+1

你是一個什麼樣的程序員? A.學習的人。 B. [誰在其他地方尋找答案而沒有首先顯示誠實的嘗試](http://whathaveyoutried.com/):p - 迄今爲止您展示您的代碼是好事,但您沒有展示過任何真正的嘗試你堅持的部分。 –

+0

@NiettheDarkAbsol哈哈我是一個非常扭曲地學習/正在學習的程序員。我的知識令人難以置信地不完整,從幾種語言的概念出發,沒有真正掌握任何語言。相信我與否,我已經在這裏工作了幾個星期,但不是全職,嘗試了幾種方法和語言(首先在PHP中嘗試過)。我已經沒有耐心了,並決定採取簡單的方式,並在這裏發佈一個問題。 – Kflap

+0

啊,我讀過這個標題,並認爲這是一個測驗,以確定我作爲JavaScript開發人員具有什麼樣的個性。 – Sukima

回答

2

http://jsbin.com/yufej/1/edit

這是一個複雜的任務,但我們做的步驟:

1-添加事件偵聽器的點擊輸入

var inputs = document.getElementsByTagName('input'); 
for(var i = 0; i < inputs.length; i++){ 
    inputs[i].addEventListener('click', check); 
} 

2-檢查是否所有的問題都回答

function check(){ 
    userAnswers = []; 
    var c = 0; 
    for(var i = 0; i < inputs.length; i++){ 
    if(inputs[i].checked) { 
     userAnswers.push(i%3); 
     c++; 
    } 
    } 
    if(c==questionArray.length) rate(); 
} 

3-率每個字符的答案

function rate(){ 
    for(var i = 0; i < userAnswers.length; i++){ 
    for(var j = 0; j < characterAnswer.length; j++){ 
     characterAnswer[j][4] = 0; 
     for(var x = 0; x < 4; x++){ 
     if(userAnswers[i] == characterAnswer[j][x]) 
      characterAnswer[j][4]++; 
     } 
    } 
    } 
    answer(); 
} 

4-答案是...

function answer(){ 
    var a = 0, t; 
    for(var j = 0; j < characterAnswer.length; j++){ 
    if(characterAnswer[j][4] > a) { 
     a = characterAnswer[j][4]; 
     t = characterAnswer[j][3]; 
    } 
    } 
    alert(t); 
} 

請注意:document.write是一種不好的做法,你應該用document.createElementdocument.body.appendChild更換。