Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите плз со скриптом 
:(
    Опции темы
upics
Дата 17.7.2011, 10:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 13.7.2011

Репутация: нет
Всего: нет



вообщем данный скрипт является тестовой системой ТЕСТ
я не могу понять как в нем найти правильный ответ, помогите плз разобраться как в данном коде определить правильные ответы =)

вот примеры вопросов из скрипта который я выложил:
Код

function Quest77() {
parent.QuestField.document.writeln('<P>');
parent.QuestField.document.writeln('"Запрещено всё, кроме прямо разрешённого законом."  Это принцип: <BR>');
parent.QuestField.document.writeln('</P>');
var AnsNum=new Array();
var i,j;
for(i=0;i<4;i++) AnsNum[i]=i;
for(i=0;i<4;i++) { j=Math.floor(Math.random()*4)%4; Buf=AnsNum[i]; AnsNum[i]=AnsNum[j]; AnsNum[j]=Buf;};
parent.QuestField.document.writeln('<TABLE>');
for(i=0;i<4;i++)  {
if(AnsNum[i]==0)
{parent.QuestField.document.writeln('<TR>');
parent.QuestField.document.writeln('<TD valign=top> <INPUT type="radio" name="R77" value="1"> </TD>');
parent.QuestField.document.writeln('<TD valign=top>');
parent.QuestField.document.writeln('<P>');
parent.QuestField.document.writeln('общедозволительного типа регулирования; <BR>');
parent.QuestField.document.writeln('</P>');
parent.QuestField.document.writeln('</TD>');
parent.QuestField.document.writeln('</TR>'); }
if(AnsNum[i]==1)
{parent.QuestField.document.writeln('<TR>');
parent.QuestField.document.writeln('<TD valign=top> <INPUT type="radio" name="R77" value="2"> </TD>');
parent.QuestField.document.writeln('<TD valign=top>');
parent.QuestField.document.writeln('<P>');
parent.QuestField.document.writeln('разрешительного типа регулирования; <BR>');
parent.QuestField.document.writeln('</P>');
parent.QuestField.document.writeln('</TD>');
parent.QuestField.document.writeln('</TR>'); }
if(AnsNum[i]==2)
{parent.QuestField.document.writeln('<TR>');
parent.QuestField.document.writeln('<TD valign=top> <INPUT type="radio" name="R77" value="3"> </TD>');
parent.QuestField.document.writeln('<TD valign=top>');
parent.QuestField.document.writeln('<P>');
parent.QuestField.document.writeln('динамического типа регулирования; <BR>');
parent.QuestField.document.writeln('</P>');
parent.QuestField.document.writeln('</TD>');
parent.QuestField.document.writeln('</TR>'); }
if(AnsNum[i]==3)
{parent.QuestField.document.writeln('<TR>');
parent.QuestField.document.writeln('<TD valign=top> <INPUT type="radio" name="R77" value="4"> </TD>');
parent.QuestField.document.writeln('<TD valign=top>');
parent.QuestField.document.writeln('<P>');
parent.QuestField.document.writeln('статического типа регулирования; <BR>');
parent.QuestField.document.writeln('</P>');
parent.QuestField.document.writeln('</TD>');
parent.QuestField.document.writeln('</TR>'); }
  }    parent.QuestField.document.writeln('</TABLE>');}

 function Check77(){
 var i;
 var N=0;
 var V=0;
 for(i=0;i<4;i++)  {
 if(parent.QuestField.document.forms[0].elements[i].checked)
 {     V=parseInt(parent.QuestField.document.forms[0].elements[i].value,10);
 N=N|(1<<V);
 }  }
 Ans=Ans+"77 = "+N+"|"; 
  if(N==4)
 {    QR=QR+1;  }
 else { AddIQN(77);}}


Код

function Quest76() {
parent.QuestField.document.writeln('<P>');
parent.QuestField.document.writeln('Укажите признаки юридической  ответственности: <BR>');
parent.QuestField.document.writeln('</P>');
var AnsNum=new Array();
var i,j;
for(i=0;i<6;i++) AnsNum[i]=i;
for(i=0;i<6;i++) { j=Math.floor(Math.random()*6)%6; Buf=AnsNum[i]; AnsNum[i]=AnsNum[j]; AnsNum[j]=Buf;};
parent.QuestField.document.writeln('<TABLE>');
for(i=0;i<6;i++)  {
if(AnsNum[i]==0)
{parent.QuestField.document.writeln('<TR>');
parent.QuestField.document.writeln('<TD valign=top> <INPUT type="checkbox" name="C76_1" value="1"> </TD>');
parent.QuestField.document.writeln('<TD valign=top>');
parent.QuestField.document.writeln('<P>');
parent.QuestField.document.writeln('это мера государственно-правового принуждения; <BR>');
parent.QuestField.document.writeln('</P>');
parent.QuestField.document.writeln('</TD>');
parent.QuestField.document.writeln('</TR>'); }
if(AnsNum[i]==1)
{parent.QuestField.document.writeln('<TR>');
parent.QuestField.document.writeln('<TD valign=top> <INPUT type="checkbox" name="C76_2" value="2"> </TD>');
parent.QuestField.document.writeln('<TD valign=top>');
parent.QuestField.document.writeln('<P>');
parent.QuestField.document.writeln('это вид и мера дозволенного поведения; <BR>');
parent.QuestField.document.writeln('</P>');
parent.QuestField.document.writeln('</TD>');
parent.QuestField.document.writeln('</TR>'); }
if(AnsNum[i]==2)
{parent.QuestField.document.writeln('<TR>');
parent.QuestField.document.writeln('<TD valign=top> <INPUT type="checkbox" name="C76_3" value="3"> </TD>');
parent.QuestField.document.writeln('<TD valign=top>');
parent.QuestField.document.writeln('<P>');
parent.QuestField.document.writeln('это реализация санкций карательных норм; <BR>');
parent.QuestField.document.writeln('</P>');
parent.QuestField.document.writeln('</TD>');
parent.QuestField.document.writeln('</TR>'); }
if(AnsNum[i]==3)
{parent.QuestField.document.writeln('<TR>');
parent.QuestField.document.writeln('<TD valign=top> <INPUT type="checkbox" name="C76_4" value="4"> </TD>');
parent.QuestField.document.writeln('<TD valign=top>');
parent.QuestField.document.writeln('<P>');
parent.QuestField.document.writeln('это мера пресечения; <BR>');
parent.QuestField.document.writeln('</P>');
parent.QuestField.document.writeln('</TD>');
parent.QuestField.document.writeln('</TR>'); }
if(AnsNum[i]==4)
{parent.QuestField.document.writeln('<TR>');
parent.QuestField.document.writeln('<TD valign=top> <INPUT type="checkbox" name="C76_5" value="5"> </TD>');
parent.QuestField.document.writeln('<TD valign=top>');
parent.QuestField.document.writeln('<P>');
parent.QuestField.document.writeln('это необходимое последствие совершённого правонарушения; <BR>');
parent.QuestField.document.writeln('</P>');
parent.QuestField.document.writeln('</TD>');
parent.QuestField.document.writeln('</TR>'); }
if(AnsNum[i]==5)
{parent.QuestField.document.writeln('<TR>');
parent.QuestField.document.writeln('<TD valign=top> <INPUT type="checkbox" name="C76_6" value="6"> </TD>');
parent.QuestField.document.writeln('<TD valign=top>');
parent.QuestField.document.writeln('<P>');
parent.QuestField.document.writeln('это реквизиция имущества; <BR>');
parent.QuestField.document.writeln('</P>');
parent.QuestField.document.writeln('</TD>');
parent.QuestField.document.writeln('</TR>'); }
  }    parent.QuestField.document.writeln('</TABLE>');}

 function Check76(){
 var i;
 var N=0;
 var V=0;
 for(i=0;i<6;i++)  {
 if(parent.QuestField.document.forms[0].elements[i].checked)
 {     V=parseInt(parent.QuestField.document.forms[0].elements[i].value,10);
 N=N|(1<<V);
 }  }
 Ans=Ans+"76 = "+N+"|"; 
  if(N==42)
 {    QR=QR+1;  }
 else { AddIQN(76);}}


Это сообщение отредактировал(а) upics - 17.7.2011, 16:30
PM MAIL   Вверх
iff
Дата 17.7.2011, 18:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Администратор
**


Профиль
Группа: Участник
Сообщений: 949
Регистрация: 23.3.2007

Репутация: 3
Всего: 16



Да уж. Не могу сказать, что я хорошо разбираюсь в JavaScript (хотя знаком с ним), но как мне кажется что код не самый лучший.
Например этот кусок
Код

parent.QuestField.document.writeln('<TR>');
parent.QuestField.document.writeln('<TD valign=top> <INPUT type="radio" name="R77" value="1"> </TD>');
parent.QuestField.document.writeln('<TD valign=top>');
parent.QuestField.document.writeln('<P>');
parent.QuestField.document.writeln('общедозволительного типа регулирования; <BR>');
parent.QuestField.document.writeln('</P>');
parent.QuestField.document.writeln('</TD>');
parent.QuestField.document.writeln('</TR>');

Можно было заменить одной строчкой (один раз вызвать функцию parent.QuestField.document.writeln)
Или этот код (вроде бы это называется китайский код):
Код

if(QuestNumCheck==1){Check0();}

if(QuestNumCheck==2){Check1();}

if(QuestNumCheck==3){Check2();}

if(QuestNumCheck==4){Check3();}

if(QuestNumCheck==5){Check4();}

if(QuestNumCheck==6){Check5();}

if(QuestNumCheck==7){Check6();}

if(QuestNumCheck==8){Check7();}

if(QuestNumCheck==9){Check8();}

if(QuestNumCheck==10){Check9();}

if(QuestNumCheck==11){Check10();}

if(QuestNumCheck==12){Check11();}

if(QuestNumCheck==13){Check12();}

if(QuestNumCheck==14){Check13();}

if(QuestNumCheck==15){Check14();}

if(QuestNumCheck==16){Check15();}

if(QuestNumCheck==17){Check16();}

if(QuestNumCheck==18){Check17();}

if(QuestNumCheck==19){Check18();}

if(QuestNumCheck==20){Check19();}

if(QuestNumCheck==21){Check20();}

if(QuestNumCheck==22){Check21();}

if(QuestNumCheck==23){Check22();}

if(QuestNumCheck==24){Check23();}

if(QuestNumCheck==25){Check24();}

if(QuestNumCheck==26){Check25();}

if(QuestNumCheck==27){Check26();}

if(QuestNumCheck==28){Check27();}

if(QuestNumCheck==29){Check28();}

if(QuestNumCheck==30){Check29();}

if(QuestNumCheck==31){Check30();}

if(QuestNumCheck==32){Check31();}

if(QuestNumCheck==33){Check32();}

if(QuestNumCheck==34){Check33();}

if(QuestNumCheck==35){Check34();}

if(QuestNumCheck==36){Check35();}

if(QuestNumCheck==37){Check36();}

if(QuestNumCheck==38){Check37();}

if(QuestNumCheck==39){Check38();}

if(QuestNumCheck==40){Check39();}

if(QuestNumCheck==41){Check40();}

if(QuestNumCheck==42){Check41();}

if(QuestNumCheck==43){Check42();}

if(QuestNumCheck==44){Check43();}

if(QuestNumCheck==45){Check44();}

if(QuestNumCheck==46){Check45();}

if(QuestNumCheck==47){Check46();}

if(QuestNumCheck==48){Check47();}

if(QuestNumCheck==49){Check48();}

if(QuestNumCheck==50){Check49();}

if(QuestNumCheck==51){Check50();}

if(QuestNumCheck==52){Check51();}

if(QuestNumCheck==53){Check52();}

if(QuestNumCheck==54){Check53();}

if(QuestNumCheck==55){Check54();}

if(QuestNumCheck==56){Check55();}

if(QuestNumCheck==57){Check56();}

if(QuestNumCheck==58){Check57();}

if(QuestNumCheck==59){Check58();}

if(QuestNumCheck==60){Check59();}

if(QuestNumCheck==61){Check60();}

if(QuestNumCheck==62){Check61();}

if(QuestNumCheck==63){Check62();}

if(QuestNumCheck==64){Check63();}

if(QuestNumCheck==65){Check64();}

if(QuestNumCheck==66){Check65();}

if(QuestNumCheck==67){Check66();}

if(QuestNumCheck==68){Check67();}

if(QuestNumCheck==69){Check68();}

if(QuestNumCheck==70){Check69();}

if(QuestNumCheck==71){Check70();}

if(QuestNumCheck==72){Check71();}

if(QuestNumCheck==73){Check72();}

if(QuestNumCheck==74){Check73();}

if(QuestNumCheck==75){Check74();}

if(QuestNumCheck==76){Check75();}

if(QuestNumCheck==77){Check76();}

if(QuestNumCheck==78){Check77();}

if(QuestNumCheck==79){Check78();}

if(QuestNumCheck==80){Check79();}

if(QuestNumCheck==81){Check80();}

if(QuestNumCheck==82){Check81();}

if(QuestNumCheck==83){Check82();}

if(QuestNumCheck==84){Check83();}

if(QuestNumCheck==85){Check84();}

if(QuestNumCheck==86){Check85();}

if(QuestNumCheck==87){Check86();}

if(QuestNumCheck==88){Check87();}

if(QuestNumCheck==89){Check88();}

if(QuestNumCheck==90){Check89();}

if(QuestNumCheck==91){Check90();}

if(QuestNumCheck==92){Check91();}

if(QuestNumCheck==93){Check92();}

if(QuestNumCheck==94){Check93();}

if(QuestNumCheck==95){Check94();}

if(QuestNumCheck==96){Check95();}

if(QuestNumCheck==97){Check96();}

if(QuestNumCheck==98){Check97();}

if(QuestNumCheck==99){Check98();}

if(QuestNumCheck==100){Check99();}

if(QuestNumCheck==101){Check100();}

if(QuestNumCheck==102){Check101();}

if(QuestNumCheck==103){Check102();}

if(QuestNumCheck==104){Check103();}

if(QuestNumCheck==105){Check104();}

if(QuestNumCheck==106){Check105();}

if(QuestNumCheck==107){Check106();}

if(QuestNumCheck==108){Check107();}

if(QuestNumCheck==109){Check108();}

if(QuestNumCheck==110){Check109();}

if(QuestNumCheck==111){Check110();}

if(QuestNumCheck==112){Check111();}

if(QuestNumCheck==113){Check112();}

if(QuestNumCheck==114){Check113();}

if(QuestNumCheck==115){Check114();}

if(QuestNumCheck==116){Check115();}

if(QuestNumCheck==117){Check116();}

if(QuestNumCheck==118){Check117();}

if(QuestNumCheck==119){Check118();}

if(QuestNumCheck==120){Check119();}

Во-первых можно было бы создать массив функций. Но если это никак нельзя, то весь этот код можно заменить на:
Код

window['Check' + --QuestNumCheck]();

Или на абсолютно эдентичный:
Код

if (QuestNumCheck >= 1 && QuestNumCheck <= 120) window['Check' + --QuestNumCheck]();

Хотя может это оптимизация по времени...

Теперь непосредственно по вопросу: как понять где правильные ответы.
Обычно такого рода тесты создают так, что клиентская часть ПО отвечает только за интерфейс и за то, что-бы "упаковать" ответы и переслать их серверу, а затем от сервера получить результат. Т.е. правильные ответы знает только сервер.
Но в данном случае проверка производится на клиентской части, а значит найти все правильные ответы можно smile
Как это делать:
Допустим вам выпал вопрос "Укажите признаки юридической  ответственности" (этот вопрос вы отобразили в вашем втором примере кода)
  • 1. Вы смотрте исходный код http://www.usla.ru/Lemon/Test/TGP1036/NextQuest.jsc например в IE и в меню Правка - Найти на этой странице  по названию вопроса находите те функции, которые отвечают за его вывод и проверку. (Вы их и разместили во втором примере кода в своем посте) 
  • 2. Дальше вы обращаете внимание на строчку
     if(N==42)
    в функции Check76. В этом (76-ом) вопросе в этой строке стоит число 42. Именно это число содержит ответ!
  • 3. Открываете калькулятор, ставите инжинерный вид. Вводите число 42, затем нажимаете "Bin" и число переводится в двоичную систему исчисления и на экране выводится 101010. Теперь определяем на каких местах стоят единицы, если считать с права на лево. В данном случае единицы стоят на местах 2, 4 и 6. Намера правильных ответов получаем уменьшив на 1 значение мест, где есть единицы. Т.е. правильные ответы - 1, 3, и 5. Потом на калькуляторе нажимаем "Dec", что-бы повторить операцию в дальнейшем для другого вопроса (ввести другое десятичное число).
  • 4. Когда вы будете тестироваться, варинты ответов скрипт дает в случайном порядке (1-ый, 3-ий и 5-ый ответы не будут отображены 1-ым, 3-им и 5-ым). Нужно соотнести полученные в прошлом шаге номера и ответы. В функции Quest76() находи строку
     parent.QuestField.document.writeln('<TD valign=top> <INPUT type="checkbox" name="C76_1" value="1"> </TD>');
    здесь написано value="1", т.е. это первый вариант ответа, а его формултровка указана 2 строчками ниже:
     parent.QuestField.document.writeln('это мера государственно-правового принуждения; <BR>');
    Один правильный ответ уже найден (это мера государственно-правового принуждения), другие (3-ий и 5-ый) находятся также.
Итак, правильные ответы на вопрос "Укажите признаки юридической  ответственности": это мера государственно-правового принуждения, это реализация санкций карательных норм, 'это необходимое последствие совершённого правонарушения.

Таким образом работают с вопросами, где нужно выбрать один правильный ответ из предложенных или несколько. Есть ещё вопросы, где нужно напечатать правильный ответ (напр. 118)
Код

function Quest118() {
parent.QuestField.document.writeln('<P>');
parent.QuestField.document.writeln('Деятельность по анализу фактических обстоятельств, требующих правового разрешения, и выбор нормы права, предусматривающей  эти  обстоятельства называется: <BR>');
parent.QuestField.document.writeln('</P>');
 parent.QuestField.document.writeln('<INPUT type="Text" size=70 name=" T118" value=""><br>');
parent.QuestField.document.forms[0].elements[0].focus();}

 function Check118(){
 var i;
var Flag=0;
var InputStr=parent.QuestField.document.forms[0].elements[0].value;
var AnsPat=new Array();
AnsPat[0]="юридическ* квалификац* ";
for(i=0;i<AnsPat.length;i++)
{   if(StrCompare(InputStr,AnsPat[i])) { Flag=1;}  }
Ans=Ans+"118="+InputStr+"|";
  if(Flag)
{    QR=QR+1;  }
else { AddIQN(118);}}

Здесь всё ясно: первый шаг как в предыдущем алгоритме, а дальше:
находите строчку
 AnsPat[0]="юридическ* квалификац* ";
Она содержит ответ. Вы должны впечать что-то, где встречалось бы подстрока "юридическ" и "квалификац". Например "юридическая квалификация".

Это сообщение отредактировал(а) iff - 18.7.2011, 11:46


--------------------
DOS... Синей пеленой экран заполнил чистый DOS 
Мышь... Стала вдруг квадратной, потеряла форму мышь... 
Я разбил окно, девяностопятое мастдайное окно, 
И поставил DOS, и тогда увидел: Это счастье, — вот оно.  
PM MAIL WWW   Вверх
upics
Дата 17.7.2011, 18:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 13.7.2011

Репутация: нет
Всего: нет



iff, спасибо огромное!!!! щас попробовал тест пройти с этим способом который ты дал, все работает!!!! огромное спасибо!!! smile  smile  блин дал бы плюс в репу но не могу, 100 сообщений нет, модеры или кто нибудь еще плюсаните за меня плиз!!!! smile 

Это сообщение отредактировал(а) upics - 17.7.2011, 18:44
PM MAIL   Вверх
iff
Дата 18.7.2011, 10:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Администратор
**


Профиль
Группа: Участник
Сообщений: 949
Регистрация: 23.3.2007

Репутация: 3
Всего: 16



Шимов Олег, помните: вся информация, представленная выше предназначена только для ознакомления с принципом программной реализации алгоритма тестирования.


--------------------
DOS... Синей пеленой экран заполнил чистый DOS 
Мышь... Стала вдруг квадратной, потеряла форму мышь... 
Я разбил окно, девяностопятое мастдайное окно, 
И поставил DOS, и тогда увидел: Это счастье, — вот оно.  
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0463 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.