Веб-страница с опросом.
здравствуйте!
помогите пожалуйста, с лабораторной работой! я понимаю что нужно самой все решать, но тут так получилось, что я буквально только что перевелась на другой факультет и уже надо закрывать лабораторные. я так то все сделаю, но вот есть одна с которой проблемы: там javascript, а с ним я вообще не знакома. группа новая, так что лекции тоже взять не у кого. смысл лабы такой: надо сделать что то типа интерактивного задания для проверки знаний в форме ЕГЭ. то есть несколько веб-страниц с данными, в конце каждой веб-страницы проверочное задание. задания двух видов: в форме тестов и в форме свободного ответа. надо чтобы переход от одной веб-страницы к другой был возможен только после заполнения проверочного задания, и чтобы результаты проверки задания как-нибудь сохранялись. в крайнем случае, посоветуйте хоть где почитать про конкретно такие вопросы. или может быть кто-то видел такое уже сделанное, чтобы можно было изучить конкретный код. все учебники и методички листать я физически уже не вывезу - времени до конца недели осталось, а заданий много :-( |
в раздел работа вам
|
anya_m,
зачем в конец года переходить на другой факультет с предметом который не знаешь? и да вам в раздел работа |
<p><b>Вы знаете JS?:</b><Br> <input type="radio" class="q" name="q1" value="no"> нет<Br> <input type="radio" class="q" name="q1" value="yes"> да<Br> <input type="radio" class="q" name="q1" value="i idiot"> что это такое?<Br> </p> <p><b>Ваш размер сисек?:</b><Br> <input type="text" class="q" name="q2"> </p> <input type="button" onClick="test()" value="отправить"> <script> function test(){ var inputs =document.getElementsByTagName('input'); var answers=new Array(),counts=new Array(); // old , use {},[] for(var i=0,s=inputs.length;i<s;i++){ if(inputs[i].className=='q'){ switch(inputs[i].type){ case"text": if(inputs[i].value)answers[answers.length]=inputs[i].name+':'+inputs[i].value; // ie5 or use method push break; case"radio": if(inputs[i].checked)answers[answers.length]=inputs[i].name+':'+inputs[i].value; break; } counts[inputs[i].name]=true; } } var l=0; for(var i in counts){ // IE<9 or use Object.keys(counts).length if(counts.hasOwnProperty(i))++l; // ie6>=? } if(l==answers.length){ // answers save to cookies or storage alert(answers.join("\n")); // window.location='/next_page'; alert('go to next page'); }else alert('Please answer the questions'); } </script> про куки в гугле, хтмл сами нарисуете. Но вас завалят с таким кодом, так что вам лучше писать хтмл страницы, а потом приляпывать к каждому инпуту проверку. |
Здравствуйте, Edison!
Огромное Вам спасибо за ответ, судя по всему, это ровно то, что нужно! От всей души благодарю! Не совсем поняла только, почему с таким кодом могут завалить? Вроде бы он полностью соответствует условиям задачи, разве нет? Или в нём какие-то врождённые дефекты присутствуют? Про куки - это типа вот этого: http://www.quirksmode.org/js/cookies.html Да? Мне кажется, я просто неправильна поняла условия задачи, так как без серверной части вроде бы нормальный обмен и хранениие данных обеспечить не получится. Но для пущей важности вариант с куками будет очень кстати. |
Потому, что новички так не пишут и более опытные тоже))
Тут идет привязка по классу ко всем полям и достаточно только наклепать инпутов с разными именами и классом q. Но чекбоксы тут не подойдут, только радиобатн ))) Обычно новички проверяют каждый инпут. А остальные пишут как захотят, но все таки учитывают количество вопросов, а не сверяют количество инпутов на странице с количеством ответов. Но создавать объекты, потом фильтровать на уники.. В общем это лишнее когда известно количество вопросов. И достаточно будет идти по списку инпутов допустим через for и если встретится не заполненный останавливать скрипт и не пускать пользователя дальше. Ммм, для обособленной задачи можно и кукисы использовать, конечно в реальных условиях для такой задачи не используют куки, т.к. данные все равно нужно хранить на сервере, а не у клиента, а то смысл теряется. Хотя их можно оставить у юзера, а когда он ответит на последний вопрос отправить все на сервер, а там уже поставить ему балл и соответственно на сервере можно хранить только оценку, а не все ответы. Да ссылка та. |
Часовой пояс GMT +3, время: 01:46. |