Javascript-форум (https://javascript.ru/forum/)
-   Ваши сайты и скрипты (https://javascript.ru/forum/project/)
-   -   Помогите пожалуйста с тестом!!! (https://javascript.ru/forum/project/52645-pomogite-pozhalujjsta-s-testom.html)

Kryloff 28.12.2014 20:57

Помогите пожалуйста с тестом!!!
 
Имеется тест, который выводит оценку и кол-во правильных ответов. Необходимо, чтобы тест еще выводил номера вопросов где ответили не правильно. Помогите пожалуйста!!!

Код:

<html>
        <head>
        <meta charset="utf-8">
        <link rel="stylesheet" type="text/css" href="Form1.css">
        <script type="text/javascript">
        var d=document, rez=0,
        ball=1,            //балл за вопрос
        vsego=5,          //всего вопросов
        count=0;          //Кол-во правильных ответов
        function stopTest(){

var i=0;

//Первый вопрос
    for(i=0; i<d.getElementsByName("q1").length; i++){
   
    if(d.getElementsByName("q1")[i].checked) {
     
    if(i==2){rez+=5; count++;}     
    }
   
}   


//Второй вопрос           
    for(i=0; i<d.getElementsByName("q2").length; i++){
   
    if(d.getElementsByName("q2")[i].checked) {
     
    if(i==4){rez+=5; count++;}     
    }
}   
       
//Третий вопрос
    for(i=0; i<d.getElementsByName("q3").length; i++){
   
    if(d.getElementsByName("q3")[i].checked) {
     
    if(i==2){rez+=5; count++;}     
    }
}   

//Четвертый вопрос
    for(i=0; i<d.getElementsByName("q4").length; i++){
   
    if(d.getElementsByName("q4")[i].checked) {
     
    if(i==3){rez+=5; count++;}     
    }
}   
           
//Пятый вопрос 
           
    for(i=0; i<d.getElementsByName("q5").length; i++){
   
    if(d.getElementsByName("q5")[i].checked) {
     
    if(i==5){rez+=5; count++;}     
    }
}   
       
        alert('Ваша оценка '+((rez/ball)/vsego)*1+' \nВы правильно ответили на '+count+ ' вопросов из '+vsego+'.');
       
           
location.reload(true);
rez=0;
count=0;
}
        </script>
        </head>
        <style>
                body {
               
        background: url(1.jpg) no-repeat 100%;
        background-attachment:fixed;
                }
        </style>
        <body>
       
                <form method="get" name="formname" onsubmit="return checkForm();">

                <div id="header"><center><h2><i>Ответьте на вопросы!</i></h2></center></div>
                <div id="blok1">
                <center><h4 name="v1">1. Сколько будет 2+2*5?</h4></center>
                <input type="radio" name="q1">25<br>
                <input type="radio" name="q1">20<br>
                <input type="radio" name="q1">12<br>
                <input type="radio" name="q1">30<br>
                <input type="radio" name="q1">35<br>
                <input type="radio" name="q1">50<br>
                </div>
                <div id="blok2">
                <center><h4>2. Какая самая богатая страна мира?</h4></center>
                <input type="radio" name="q2">США<br>
                <input type="radio" name="q2">Россия<br>
                <input type="radio" name="q2">Китай<br>
                <input type="radio" name="q2">Канада<br>
                <input type="radio" name="q2">Катар<br>
                <input type="radio" name="q2">Германия<br>
                </div>
               
                <div id="blok3">
                <center><h4>3. Как называется наша галактика?</h4></center>
                <input type="radio" name="q3">Галактика Андромеды<br>
                <input type="radio" name="q3">Комета<br>
                <input type="radio" name="q3">Млечный путь<br>
                <input type="radio" name="q3">Объект Мейола<br>
                <input type="radio" name="q3">Водоворот<br>
                <input type="radio" name="q3">Веретено<br>
                </div>
               
                <div id="blok4">
                <center><h4>4. Кто основал компанию Microsoft?</h4></center>
                <input type="radio" name="q4">Стив Джобс<br>
                <input type="radio" name="q4">Ларри Пейдж<br>
                <input type="radio" name="q4">Акио Морито<br>
                <input type="radio" name="q4">Билл Гейтс<br>
                <input type="radio" name="q4">Фредерик Идестам<br>
                <input type="radio" name="q4">Вернер Сименс<br>
                </div>
               
                <div id="blok5">
                <center><h4>5. Какое самое быстрое животное в мире?</h4></center>
                <input type="radio" name="q5">Лев<br>
                <input type="radio" name="q5">Зебра<br>
                <input type="radio" name="q5">Газель<br>
                <input type="radio" name="q5">Заяц<br>
                <input type="radio" name="q5">Собака<br>
                <input type="radio" name="q5">Гепард<br>
                </div>
               
                <div id="blok6">
                <center><h4>Нажмите на кнопку ниже, чтобы узнать результат.</h4></center>
                <input style="margin-left:43px;" type="button" value="Принять ответ" name="ok" onclick="stopTest()"/>
        <input type="reset" value="Сбросить тест"/>   
                </div>
                </form>
        </body>
</html>


krutoy 29.12.2014 00:01

<html>
	<head>
<meta charset="windows-1251" />

	<link rel="stylesheet" type="text/css" href="Form1.css">
	<style>
		body {
		
	background: url(1.jpg) no-repeat 100%;
	background-attachment:fixed;
		}
	</style>
	</head>

	<body>
	
		<form method="get" name="formname" onsubmit="return checkForm();">

		<div id="header"><center><h2><i>Ответьте на вопросы!</i></h2></center></div>
		<div id="block1">
		<center><h4 name="v1">1. Сколько будет 2+2*5?</h4></center>
		<input type="radio" name="q1">25<br>
		<input type="radio" name="q1">20<br>
		<input type="radio" name="q1">12<br>
		<input type="radio" name="q1">30<br>
		<input type="radio" name="q1">35<br>
		<input type="radio" name="q1">50<br>
		</div>
		<div id="block2">
		<center><h4>2. Какая самая богатая страна мира?</h4></center>
		<input type="radio" name="q2">США<br>
		<input type="radio" name="q2">Россия<br>
		<input type="radio" name="q2">Китай<br>
		<input type="radio" name="q2">Канада<br>
		<input type="radio" name="q2">Катар<br>
		<input type="radio" name="q2">Германия<br>
		</div>
		
		<div id="block3">
		<center><h4>3. Как называется наша галактика?</h4></center>
		<input type="radio" name="q3">Галактика Андромеды<br>
		<input type="radio" name="q3">Комета<br>
		<input type="radio" name="q3">Млечный путь<br>
		<input type="radio" name="q3">Объект Мейола<br>
		<input type="radio" name="q3">Водоворот<br>
		<input type="radio" name="q3">Веретено<br>
		</div>
		
		<div id="block4">
		<center><h4>4. Кто основал компанию Microsoft?</h4></center>
		<input type="radio" name="q4">Стив Джобс<br>
		<input type="radio" name="q4">Ларри Пейдж<br>
		<input type="radio" name="q4">Акио Морито<br>
		<input type="radio" name="q4">Билл Гейтс<br>
		<input type="radio" name="q4">Фредерик Идестам<br>
		<input type="radio" name="q4">Вернер Сименс<br>
		</div>
		
		<div id="block5">
		<center><h4>5. Какое самое быстрое животное в мире?</h4></center>
		<input type="radio" name="q5">Лев<br>
		<input type="radio" name="q5">Зебра<br>
		<input type="radio" name="q5">Газель<br>
		<input type="radio" name="q5">Заяц<br>
		<input type="radio" name="q5">Собака<br>
		<input type="radio" name="q5">Гепард<br>
		</div>
		
		<div id="block6">
		<center><h4>Нажмите на кнопку ниже, чтобы узнать результат.</h4></center>
		<input style="margin-left:43px;" type="button" value="Принять ответ" name="ok"/>
        <input type="reset" value="Сбросить тест"/>    
		</div>
		</form>
<script>

        ball=1,            //балл за вопрос

answers={q1: 1, q2: 0, q3: 2, q4: 3, q5: 5}
document.getElementsByName("ok")[0].onclick=function(){

   var  count=0
   "block1 block2 block3 block4 block5"
   .split(" ")
   .map(function(id){return document.getElementById(id).querySelectorAll("input")})
   .forEach(function(collection){for(var i=0; i<collection.length; i++){
      if((collection[i].checked)&&(answers[collection[i].name]===i)) count++ }})
   alert("Ваша оценка: "+count*ball+". Вы ответили на "+count+" вопросов из 5")

}

</script>


	</body>
</html>

PS не понял вашей мудреной системы начисления баллов за оценки. Я в математике не силен. В моем варианте, тупо начисление балла за каждый правильный ответ. Сбрасывать тест тоже непонятно зачем, все равно невозможно установить больше 1 флага на блок.

Kryloff 29.12.2014 00:14

Спасибо конечно, но результат тот же, что и у меня. Мне нужно, чтобы показывало дополнительно вопросы на которые не правильно ответил

krutoy 29.12.2014 00:37

Так чтоли?
<html>
	<head>
<meta charset="windows-1251" />

	<link rel="stylesheet" type="text/css" href="Form1.css">
	<style>
		body {
		
	background: url(1.jpg) no-repeat 100%;
	background-attachment:fixed;
		}
	</style>
	</head>

	<body>
	
		<form method="get" name="formname" onsubmit="return checkForm();">

		<div id="header"><center><h2><i>Ответьте на вопросы!</i></h2></center></div>
		<div id="block1">
		<center><h4 name="v1">1. Сколько будет 2+2*5?</h4></center>
		<input type="radio" name="q1">25<br>
		<input type="radio" name="q1">20<br>
		<input type="radio" name="q1">12<br>
		<input type="radio" name="q1">30<br>
		<input type="radio" name="q1">35<br>
		<input type="radio" name="q1">50<br>
		</div>
		<div id="block2">
		<center><h4>2. Какая самая богатая страна мира?</h4></center>
		<input type="radio" name="q2">США<br>
		<input type="radio" name="q2">Россия<br>
		<input type="radio" name="q2">Китай<br>
		<input type="radio" name="q2">Канада<br>
		<input type="radio" name="q2">Катар<br>
		<input type="radio" name="q2">Германия<br>
		</div>
		
		<div id="block3">
		<center><h4>3. Как называется наша галактика?</h4></center>
		<input type="radio" name="q3">Галактика Андромеды<br>
		<input type="radio" name="q3">Комета<br>
		<input type="radio" name="q3">Млечный путь<br>
		<input type="radio" name="q3">Объект Мейола<br>
		<input type="radio" name="q3">Водоворот<br>
		<input type="radio" name="q3">Веретено<br>
		</div>
		
		<div id="block4">
		<center><h4>4. Кто основал компанию Microsoft?</h4></center>
		<input type="radio" name="q4">Стив Джобс<br>
		<input type="radio" name="q4">Ларри Пейдж<br>
		<input type="radio" name="q4">Акио Морито<br>
		<input type="radio" name="q4">Билл Гейтс<br>
		<input type="radio" name="q4">Фредерик Идестам<br>
		<input type="radio" name="q4">Вернер Сименс<br>
		</div>
		
		<div id="block5">
		<center><h4>5. Какое самое быстрое животное в мире?</h4></center>
		<input type="radio" name="q5">Лев<br>
		<input type="radio" name="q5">Зебра<br>
		<input type="radio" name="q5">Газель<br>
		<input type="radio" name="q5">Заяц<br>
		<input type="radio" name="q5">Собака<br>
		<input type="radio" name="q5">Гепард<br>
		</div>
		
		<div id="block6">
		<center><h4>Нажмите на кнопку ниже, чтобы узнать результат.</h4></center>
		<input style="margin-left:43px;" type="button" value="Принять ответ" name="ok"/>
        <input type="reset" value="Сбросить тест"/>    
		</div>
		</form>
<script>

        ball=1,            //балл за вопрос

answers={q1: 1, q2: 0, q3: 2, q4: 3, q5: 5}
document.getElementsByName("ok")[0].onclick=function(){

   var  count=0, wrong=[], noAnswer=[]
   "block1 block2 block3 block4 block5"
   .split(" ")
   .map(function(id){return document.getElementById(id).querySelectorAll("input")})
   .forEach(function(collection){
    var tmp=collection[0].name[1];
    for(var i=0; i<collection.length; i++){
      if(collection[i].checked){
        if(answers[collection[i].name]===i) return count++; return wrong.push(tmp)}} noAnswer.push(tmp)})
  
   alert("Ваша оценка: "+count*ball+".\nВы ответили на "+count+" вопросов из 5\n"+"Неверные ответы на вопросы: "+wrong+"\nНет ответов на вопросы: "+noAnswer)
  
}

</script>


	</body>
</html>

krutoy 29.12.2014 01:19

Kryloff,
Да, и вот еще что, сразу не обратил внимания, у вас там самая богатая страна -- толи канада, то ли катар, (с какого хрена?), если все правильно, исправте в answers={q1: 1, q2: 0, q3: 2, q4: 3, q5: 5}, если это не ошибка, я там США поставил, есличо.


Часовой пояс GMT +3, время: 04:10.