Очищаем содержимое контейнеров res1 и res2

Значения по умолчанию

Метод reset устанавливает всем объектам формы

Устанавливаем видимость кнопки с именем res

res.style.visibility="visible";

test_ok=true;

psw.value="";

. . .

c в файл test.js добавь функцию:

function ok()

{ var cmd;

//заводим переменную oc, в которой будет подсчитываться

//количество верных ответов

var oc=0;

//в цикле перебираем все вопросы

for (var i=1;i<=kol;i++)

{ cmd=eval("f"+i);

//делаем поле vo видимым

cmd.vo.style.visibility="visible";

//если в поле vo записано «верно», увеличиваем значение oc

if (cmd.vo.value=="верно"){oc++};

}

//изменяем режим работы – не тестирование, а проверка

test_ok=false;

//выводим сообщение в первый контейнер <DIV>

res1.innerText="Верно "+oc+" из "+kol+

" ("+Math.ceil(oc*100/kol)+"%). Твоя оценка:";

//подсчитываем оценку по 5-балльной системе

oc=Math.ceil(oc*5/kol);

//если oc=0, оценка всё равно будет «1»

if (oc==0) {oc=1};

//выводим оценку во второй контейнер <DIV>

res2.innerText=oc;

}

Стоит пояснить только один момент: метод Math.ceil(число) округляет аргумент число с избытком.

c как всегда, проверь работу функции: попробуй все варианты и убедись, что оценка подсчитывается верно. Не забудь снять комментарий со строки, делающей невидимыми поля vo.

6. Вроде бы, можно вздохнуть спокойно – тестирование идёт, результат выдаётся. Но зададимся вопросом – а что будет, если посетитель захочет протестироваться ещё раз? Или ему так понравится тест, что он позовёт братишку или сестрёнку? В этом случае ему придётся перезагрузить страничку, а это очень неудобно. Поэтому надо предусмотреть возможность начать тестирование сначала. Можно создать для этого ещё одну кнопку, но… Вспомним, что сеанс тестирования начинается с ввода пароля. Достаточно ли этого?

7. Попробуй пройти тест, получить оценку и заново ввести пароль. Что получилось? Осталась видна оценка и ответы прежнего тестирования. Чтобы этого избежать, добавим несколько строк в функцию valid_psw():

function valid_psw()

{ if (psw.value==password)

{ var cmd;

for (var i=1;i<=kol;i++)

{ cmd=eval("f"+i);

cmd.style.visibility="visible";

cmd.reset();

cmd.vo.style.visibility="hidden";

}

res.style.visibility="visible";

res1.innerText="";

res2.innerText="";

test_ok=true;

psw.value="";

}

else

{ alert (' Неверный пароль! \n Введи ' +password);

psw.select();

}

}

8. Вот теперь можешь перевести дух и… взяться за выполнение заданий:

c добавь ещё несколько вопросов и убедись, что их текст отображается, что эти вопросы «поддаются» выбору ответа и участвуют в выводе оценки;

c нарисуй красивые «живые» оценки и измени код функции ok() так, чтобы вместо текстовой оценки выводилась картинка;

ü подсказка: достаточно картинкам с оценками дать похожие имена, например, ocen1.jpg, ocen2.jpg, … ocen5.jpg, вместо второго контейнера <DIV> поместить на страничку <IMG id=res2> и в скрипте изменять значение его атрибута res2.src="images/ocen"+oc+ ".jpg".