İçindekilerGirişİndex
YukarıİlkÖncekiSonrakiSon
Geriİleri
Yazdır
Zafer Teker
tekzaf@yahoo.com

Javascript ile Yapılan Bir Test Örneği

Bu örnekte üniversite sınavlarına benzer şıklı bir test yapıyoruz. Kullanıcı sorular için cevaplarını verdikten sonra "tamam" düğmesine tıklayarak doğru ve yanlış cevap sayısını öğrenebilir. Cevaplardaki son "cevap yok" şıkkı test'e dahil değildir. Radio box'lardan biri seçildiğinde cevap yok deme şansınız kalmamakta. Bu yüzden verilen cevaptan vaz geçildiğinde bu seçenek seçilir.

Göster Gizle Kopar Satır Gizle Satır Göster
  1 <html>
  2 <head>
  3  <SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
  4 	var key=new Array(2);
  5 	key[0]="a";
  6 	key[1]="d";
  7 	var questionNumber=2;
  8  	function count(){
  9 		var answers=getAnswers();
 10 		var trueNumber=getTrue(answers,key);
 11 		var emptyNumber=getEmpty(answers,key);
 12 		var errorNumber=questionNumber-trueNumber-emptyNumber;
 13 		alert("Doğru Cevap : "+trueNumber+"\n"+"Yanlış Cevap : "+errorNumber);
 14 	}
 15 	function getTrue(answers,key){
 16 		var trueNumber=0;
 17 		for(var i=0;i<answers.length;i++){
 18 			if(answers[i]==key[i]){
 19 				trueNumber++;
 20 			}
 21 		}
 22 		return trueNumber;
 23 	}
 24 	function getEmpty(answers,key){
 25 		var emptyNumber=0;
 26 		for(var i=0;i<answers.length;i++){
 27 			if(answers[i]=="f"){
 28 				emptyNumber++;
 29 			}
 30 		}
 31 		return emptyNumber;
 32 	}	
 33 	function getAnswers(){
 34 		var answers=new Array(questionNumber);
 35 		for(var i=0;i<questionNumber;i++){
 36 			var index=i+1;
 37 			answers[i]=eval("getSelectValue(\"q"+index+"\")");
 38 		}				
 39 		return answers;
 40 	}
 41 	function getSelectValue(aName){
 42 		var formobject=document.getElementById("test");
 43 		allElements=formobject.elements;
 44 		 for(i=0;i<allElements.length;i++){
 45 		   	 if(allElements[i].name==aName){
 46 				if(allElements[i].checked){
 47 					return allElements[i].value;
 48 				}		     	
 49 			 }
 50 		 }
 51 		 return null;
 52 	}
 53  </SCRIPT>
 54 </head>
 55 <body>
 56 	<form name="test" id="test">
 57 	<ol>
 58 		<li>Java nedir ?
 59 			<ul>
 60 				<li><input type="Radio" name="q1" value="a">biir dildir</input></li>
 61 				<li><input type="Radio" name="q1" value="b">bir dindir</input></li>
 62 				<li><input type="Radio" name="q1" value="c">bir insandır</input></li>
 63 				<li><input type="Radio" name="q1" value="d">bir yerli tanrısı</input></li>
 64 				<li><input type="Radio" name="q1" value="e">hiç biri</input></li>
 65 				<li><input type="Radio" name="q1" value="f" checked>cevap yok</input></li>				
 66 			</ul>
 67 		</li>
 68 		<li>XML nedir ?
 69 			<ul>
 70 				<li><input type="Radio" name="q2" value="a">Panter Emel'in kardeşi</input></li>
 71 				<li><input type="Radio" name="q2" value="b">Bir böcek türü</input></li>
 72 				<li><input type="Radio" name="q2" value="c">Uzaylı ismi</input></li>
 73 				<li><input type="Radio" name="q2" value="d">Bir dil</input></li>
 74 				<li><input type="Radio" name="q2" value="e">hiç biri</input></li>
 75 				<li><input type="Radio" name="q2" value="f" checked>cevap yok</input></li>								
 76 			</ul>
 77 		</li>		
 78 	</ol>
 79 	<input type="button" value="tamam" onClick="count()"/>
 80 	</form>
 81 </body>
 82 </html>

Bizim örneğimizde sadece iki soru koyduk. Ancak soru sayısı istenildiği kadar artırılabilir. Bunun için doğru cevaplar key dizisine atanır. Yeni sorular eklerken radio box'ların isimleri "q3","q4" şeklinde gitmelidir.

Doğru cevaplar key dizisinde tutulur. getAnswers() fonksiyonu verilen cevapları bulup bir diziye atamaktadır. Cevaplar bulunduktan sonra getTrue() ile doğru cevap sayısı, getEmpty() ile cevap verilmemiş soru sayısı bulunur. Bu şekilde yanlış cevap sayısıda bulunmuş olur.

getSelectValue() fonksiyonu verilen isimdeki radiobox'ları bulup, bu radio box'lardan seçilmiş olanının değerini bize göndermektedir. Böylece tüm soruların doğru cevapları bulunabilir. getAnswers() fonksiyonu soru sayısı kadar döngü açıp bu fonksiyonu çağırmaktadır.

eval("getSelectValue(\"q"+index+"\")");

fonkisyonu ile getSelectedValue("q1"), getSelectedValue("q2") şeklinde tüm soruların cevabı bulunmakatadır. ( eval fonksiyonu verilen bir string'i bir javascript ifadesine çeviren bir fonksiyondur. )

Dosya Listesi

İçindekilerGirişİndex
YukarıİlkÖncekiSonrakiSon
Geriİleri
Yazdır