1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
| <!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8"/>
<script type="text/javascript">
// Заголовок страницы (h1)
var title = 'тест на знание нечего';
// Подзаголовок (h2)
var subtitle = "Этот тест позволяет оценить Ваши знания";
// Это ваши вопросы
var questions=[ //вопросы
{
text: "2+2:", //текст
answers: ["4","1","3"], //ответы
correctAnswer: 0 // нумерация ответов с нуля! //правильный ответ
},
{
text: "3*3",
answers: ["25","9","124"],
correctAnswer: 1
},
{
text: "улыбка",
answers: ["=)","=|","=("],
correctAnswer: 0
}
];
//Массив куда будут записываться ответы пользователя
var yourAns = new Array;
var score = 0; //счёчик
//Функция для добавления ответа пользователя в массив yourAns. Функция будет вызываться всякий раз при выборе радиокнопки.
function Engine(question, answer) {yourAns[question]=answer;}
//
function Score(){
//answerText - текст модального окна
var answerText = "Результаты:\n";
//Цикл перебора массива yourAns (ответов пользователя)
for(var i = 0; i < yourAns.length; ++i){
//num - номер вопроса, +1 для того чтобы нумерация шла от единицы
var num = i+1;
answerText = answerText + "\n Вопрос №"+ num +"";
//Если ответ пользователя не равен правильному ответу
if(yourAns[i]!=questions[i].correctAnswer){
//Вывод правильно ответа
answerText=answerText+"\n Правильный ответ: " + questions[i].answers[questions[i].correctAnswer] + "\n";
}
//Если ответ пользователя правильный
else{
answerText=answerText+": Верно! \n";
++score;
}
}
answerText=answerText+"\nВсего правильных ответов: "+score+"\n";
//Вывод модального окна с текстом
alert(answerText);
//"Очистка массива ответов пользователя"
yourAns = new Array;
//Обнуление счетчика правильных ответов
score = 0;
//"Очистка" формы
clearForm("quiz");
}
//Функция "очищает форму" (убирает все отмеченные ранее пользователем ответы)
function clearForm(name) {
//Получение ссылки на форму и именем хранящимся в переменной name
var f = document.forms[name];
//Перебор всех элементов формы. Все элементы формы находятся в массиве elements формы.
for(var i = 0; i < f.elements.length; ++i) {
//Если елемент отмечен(в данном случае выбрана радиокнопка)
if(f.elements[i].checked)
//Убираем "отметку" радиокнопки
f.elements[i].checked = false;
}
}
</script>
</head>
<body>
<!-- Вывод значений переменный title и subtitle в браузер -->
<h1><script>document.write(title)</script></h1>
<h2><script>document.write(subtitle)</script></h2>
<form name="quiz">
<ol>
<!-- Вывод формы с вопросами -->
<script>
//Цикл перебора всех вопросов из массива questions
for(var q=0; q<questions.length; ++q) {
//q - номер вопроса
// question - объект содержащий информацию о вопросе:
// свойства:
// text хранит текст вопроса
// answers хранит массив возможных ответов
// correctAnswer хранит номер правильного ответа из массива answers
var question = questions[q];
// idx - номер вопроса (q1, q2, q3 - названия групп ридиокнопок к каждому вопросу, q1 - радиокнопки первого вопроса)
// +1 сделано для того, чтобы индекс название радиокнопок начинался с единицы, иначе название радиокнопок для первого вопроса было бы q0, а не q1
var idx = 1 + q;
//Вывод в браузер вопроса (вопрос выводится в элементе списка - <li>(list item))
//question.text - текст вопроса
document.writeln('<li><span class="quest">' + question.text + '</span><br/>');
//Перебор массива возможных ответов из свойства answers обьекта вопроса
// i будет указывать на индекс элемента массива с ответом (начинается с нуля)
for(var i in question.answers) {
document.writeln('<input type=radio name="q' + idx + '" value="' + i +
'" onClick="Engine(' + q + ', this.value)">' + question.answers[i] + '<br/>');
}
document.writeln('</li>');
/*
Код выше формирует html код.
Для первого вопроса будет сформирован такой код:
<li>
<span class="quest">2+2:</span><br/>
<input type=radio name="q1" value="0" onClick="Engine(0, this.value)">4<br/>
<input type=radio name="q1" value="1" onClick="Engine(0, this.value)">1<br/>
<input type=radio name="q1" value="2" onClick="Engine(0, this.value)">3<br/>
</li>
*/
}
</script>
</ol>
<!-- При клике на кнопку будет вызвана функция Score() -->
<input type='button' onclick="Score()" value="Проверить результаты">
</form>
</body>
</html> |