2012-12-15 53 views
-3

我還是JavaScript新手,我正在嘗試編寫一個測驗,根據他們選擇的答案將一個人發送到三個頁面中的一個(所以每次他們選擇一個「x」的答案,x將增加由一)。如何使用JavaScript編寫測驗?

隨着我寫到目前爲止的代碼,我有兩個問題。

  • 變量值不會增加一個,所以我可能寫錯了。

  • 我不確定如何選擇帶有最多選中答案的變量,將它們發送到相關頁面。

我試着寫一個if聲明來說明我的意思。任何想法如何改善這將不勝感激,或者如果整個其他方法會更好,我打開這一點。

var x = 0; 
var y = 0; 
var z = 0; 

function question1(){ 
    if (document.getElementById('a1').checked) { 
     x++;   
    } 
    else if (document.getElementById('a2').checked) { 
     y++; 

    } else if(document.getElementById('a3').checked){ 
     z++; 
    } 
} 
function question2(){ 
    if (document.getElementById('b1').checked) { 
     x++;   
    } 
    else if (document.getElementById('b2').checked) { 
     y++; 

    } else if(document.getElementById('b3').checked){ 
     z++; 
    } 
} 
function result(){ 
    Math.max(x,y,z); 
    if (x){ 
     alert("You chose x"); 
    } else if (y){ 
     alert("You chose y"); 
     } else if (z){ 
      alert("You chose z"); 
     } 

} 
+1

你執行的代碼?例如'''' – Raekye

+0

哦有趣。我有一個result()按鈕,但是我沒有想到我需要對每個單獨的問題進行某種處理。感謝您的意見。 – jeffusu

+0

哇Raeki謝謝。我確保在提交按鈕時執行問題函數,並且我可以讓它按照我現在想要的來執行。再次感謝。 – jeffusu

回答

0

您正在尋找這樣的事情:

var totals = [0, 0, 0]; 
var letters = ["a", "b", "c"]; 

//Go through all answer letters 
for (var i = 0, lt = letters.length; i < lt; i++) 
{ 
    //Each question has 3 possible answers 
    for (var j = 0; j < 3; j++) 
    { 
     if (document.getElementById(letters[i] + (j + 1)).checked) 
     { 
      //Increase the total that corresponds to the answer number 
      totals[j]++; 
      break; 
     } 
    } 
} 

totals.sort(function(a,b){return a-b}); 

var highest = totals.pop();