Веб-страница с опросом.
здравствуйте!
помогите пожалуйста, с лабораторной работой! я понимаю что нужно самой все решать, но тут так получилось, что я буквально только что перевелась на другой факультет и уже надо закрывать лабораторные. я так то все сделаю, но вот есть одна с которой проблемы: там 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, время: 22:55. |