2016-09-05 60 views
0

我有一個由其他人做出的多項選擇測驗,但他現在無法幫助我。我是編碼新手。我想按順序選擇我的選項。現在,當我輸入選項時,選項1將始終是正確的答案,並且代碼會自動隨機化選項,因此當我的學生進行測驗時,正確的權利並不總是選項1。有人可以幫助我,這樣選項的排列順序與我將它們放入代碼的順序相同,同時它也可以檢測到正確的答案?謝謝!測驗多項選擇如何使選項非隨機

的Javascript:

$(document).ready(function() { 

var questionNumber=0; 
var questionBank=new Array(); 
var stage="#game1"; 
var stage2=new Object; 
var questionLock=false; 
var numberOfQuestions; 
var score=0; 


    $.getJSON('activity.json', function(data) { 

    for(i=0;i<data.quizlist.length;i++){ 
     questionBank[i]=new Array; 
     questionBank[i][0]=data.quizlist[i].question; 
     questionBank[i][1]=data.quizlist[i].option1; 
     questionBank[i][2]=data.quizlist[i].option2; 
     questionBank[i][3]=data.quizlist[i].option3; 
     questionBank[i][4]=data.quizlist[i].option4; 
     questionBank[i][5]=data.quizlist[i].option5; 
    } 
    numberOfQuestions=questionBank.length; 


    scrambleDatabase(); 
    displayQuestion(); 
    })//gtjson 


fillDB(); 

function scrambleDatabase(){ 
for(i=0;i<60;i++){ 
var rnd1=Math.floor(Math.random()*questionBank.length); 
var rnd2=Math.floor(Math.random()*questionBank.length); 

var temp=questionBank[rnd1]; 
questionBank[rnd1]=questionBank[rnd2]; 
questionBank[rnd2]=temp; 

}//i 

}//scdb 

function displayQuestion(){ 
var rnd=Math.random()*3; 
rnd=Math.ceil(rnd); 
var q1; 
var q2; 
var q3; 
var q4; 
var q5; 


if(rnd==1){q1=questionBank[questionNumber][1];q2=questionBank[questionNumber][2];q3=questionBank[questionNumber][3];q4=questionBank[questionNumber][4];q5=questionBank[questionNumber][5];} 
if(rnd==2){q2=questionBank[questionNumber][1];q3=questionBank[questionNumber][2];q1=questionBank[questionNumber][3];q4=questionBank[questionNumber][4];q5=questionBank[questionNumber][5];} 
if(rnd==3){q3=questionBank[questionNumber][1];q4=questionBank[questionNumber][2];q5=questionBank[questionNumber][3];q1=questionBank[questionNumber][4];q2=questionBank[questionNumber][5];} 
if(rnd==4){q4=questionBank[questionNumber][1];q5=questionBank[questionNumber][2];q1=questionBank[questionNumber][3];q2=questionBank[questionNumber][4];q3=questionBank[questionNumber][5];} 
if(rnd==5){q5=questionBank[questionNumber][1];q1=questionBank[questionNumber][2];q2=questionBank[questionNumber][3];q3=questionBank[questionNumber][4];q4=questionBank[questionNumber][5];} 

$(stage).append('<div class="questionText"><img src="play.png"></br>What sound is this?</div><div id="1" class="option">'+q1+'</div><div id="2" class="option">'+q2+'</div><div id="3" class="option">'+q3+'</div><div id="4" class="option">'+q4+'</div><div id="5" class="option">'+q5+'</div>'); 

$('.option').click(function(){ 
    if(questionLock==false){questionLock=true;  
    //correct answer 
    if(this.id==rnd){ 
$(stage).append('<div class="feedback1"><img src="happy.png">CORRECT</div>'); 
    currentSoundName="sounds/correct.mp3"; 
    $("#dummy")[0].innerHTML='<audio id="correcttag"  src='+currentSoundName+' autobuffer="autobuffer"></audio>'; 
    $('#correcttag')[0].play(); 
    score++; 
    } 
    //wrong answer 
     if(this.id!=rnd){ 
    $(stage).append('<div class="feedback2"><img src="sad.png">WRONG</div>'); 
    currentSoundName="sounds/incorrect.mp3"; 
    $("#dummy")[0].innerHTML='<audio id="correcttag"  src='+currentSoundName+' autobuffer="autobuffer"></audio>'; 
    $('#correcttag')[0].play(); 

} 
    setTimeout(function(){changeQuestion()},1000); 
}}) 

currentSoundName="sounds/"+questionBank[questionNumber][0]; 

    $('.questionText').click(function(){ 
    $("#dummy")[0].innerHTML='<audio id="audiotag" src='+currentSoundName+' autobuffer="autobuffer"></audio>'; 
$('#audiotag')[0].play();        


}) 

}//display question 



function changeQuestion(){ 

    questionNumber++; 

if(stage=="#game1"){stage2="#game1";stage="#game2";} 
    else{stage2="#game2";stage="#game1";} 

if(questionNumber<numberOfQuestions){displayQuestion();}else{displayFinalSlide();} 

$(stage2).animate({"right": "+=800px"},"slow", function() {$(stage2).css('right','-800px');$(stage2).empty();}); 
$(stage).animate({"right": "+=800px"},"slow", function() {questionLock=false;}); 
}//change question 




function displayFinalSlide(){ 

    $(stage).append('<div class="questionText">You have finished the quiz!<br><br>Total questions: '+numberOfQuestions+'<br>Correct answers: '+score+'</div>'); 

}//display final slide 






});//doc ready 

HTML:

<!DOCTYPE html> 
<head> 

<title>Quiz</title> 
<link href="main.css"rel="stylesheet"type="text/css"/> 
<meta name=viewport content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"> 
<script src="jquery.js"></script> 
<script src="controller.js"></script> 

</head> 
<body> 

<div id="topbar">Quiz</div> 
<div class="spacer"></div> 

<div id="navContent"> 

<div id="game1"></div> 
<div id="game2"></div> 
</div> 


<span id="dummy"></span> 

</body> 
</html> 

我的問題資料庫就是這樣一個JSON文件: JSON:

{"quizlist":[ 

{ 
"question":"ba.mp3", 
"option1":"a", 
"option2":"b", 
"option3":"c", 
"option4":"d", 
"option5":"e" 
} 
+0

如果你想停止在隨機選項中的答案,那麼就不要通過移除/註釋調用語句來調用** scrambleDatabase **函數。 –

回答

0

我會進行以下修改。

首先編輯你的問題資料庫JSON文件,以便爲正確答案的額外字段(使用應答數):

{"quizlist":[ 

{ 
"question":"ba.mp3", 
"answer":2, 
"option1":"a", 
"option2":"b", 
"option3":"c", 
"option4":"d", 
"option5":"e" 
} 

然後閱讀這個答案到你的資料庫陣列:

questionBank[i][0]=data.quizlist[i].question; 
questionBank[i][1]=data.quizlist[i].option1; 
questionBank[i][2]=data.quizlist[i].option2; 
questionBank[i][3]=data.quizlist[i].option3; 
questionBank[i][4]=data.quizlist[i].option4; 
questionBank[i][5]=data.quizlist[i].option5; 
questionBank[i][6]=data.quizlist[i].answer; 

然後刪除隨機化德回答,只是讀答案到您的訂單中的變量,並存儲在RND正確答案的部分(我會重新命名該變量):

function displayQuestion(){ 

var q1 = questionBank[questionNumber][1]; 
var q2 = questionBank[questionNumber][2]; 
var q3 = questionBank[questionNumber][3]; 
var q4 = questionBank[questionNumber][4]; 
var q5 = questionBank[questionNumber][5]; 
var rnd = questionBank[questionNumber][6]; 

$(stage).append('<div class="questionText"><img src="play.png"></br>What sound is this?</div><div id="1" class="option">'+q1+'</div><div id="2" class="option">'+q2+'</div><div id="3" class="option">'+q3+'</div><div id="4" class="option">'+q4+'</div><div id="5" class="option">'+q5+'</div>'); 

而且應該這樣做

編輯:這不會是我的產生多選擇題的首選方式,但它應該給你想要用最少的編輯現有的代碼什麼。

+0

對不起,我忘了說,我也希望我的問題是隨機的,但不是選項。因此,如果我在代碼中刪除隨機數發生器,那麼問題就會出現。無論如何只是隨機選擇的選項?謝謝。 – Shannon

+0

@Shannon對不起,如果我的anwser不清楚。它仍然會隨機化問題,我只是想刪除隨機化的問題。我已經編輯了答案,以便更加清晰。 – CeejeeB