Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Веб-страница с опросом. (https://javascript.ru/forum/misc/37670-veb-stranica-s-oprosom.html)

anya_m 30.04.2013 13:51

Веб-страница с опросом.
 
здравствуйте!
помогите пожалуйста, с лабораторной работой!

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

смысл лабы такой: надо сделать что то типа интерактивного задания для проверки знаний в форме ЕГЭ. то есть несколько веб-страниц с данными, в конце каждой веб-страницы проверочное задание. задания двух видов: в форме тестов и в форме свободного ответа. надо чтобы переход от одной веб-страницы к другой был возможен только после заполнения проверочного задания, и чтобы результаты проверки задания как-нибудь сохранялись.

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

animhotep 30.04.2013 14:06

в раздел работа вам

Dim@ 30.04.2013 14:07

anya_m,
зачем в конец года переходить на другой факультет с предметом который не знаешь? и да вам в раздел работа

edison 30.04.2013 21:12

<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>

про куки в гугле, хтмл сами нарисуете. Но вас завалят с таким кодом, так что вам лучше писать хтмл страницы, а потом приляпывать к каждому инпуту проверку.

anya_m 04.05.2013 17:32

Здравствуйте, Edison!
Огромное Вам спасибо за ответ, судя по всему, это ровно то, что нужно!
От всей души благодарю!

Не совсем поняла только, почему с таким кодом могут завалить? Вроде бы он полностью соответствует условиям задачи, разве нет? Или в нём какие-то врождённые дефекты присутствуют?

Про куки - это типа вот этого:
http://www.quirksmode.org/js/cookies.html
Да?

Мне кажется, я просто неправильна поняла условия задачи, так как без серверной части вроде бы нормальный обмен и хранениие данных обеспечить не получится. Но для пущей важности вариант с куками будет очень кстати.

edison 04.05.2013 19:43

Потому, что новички так не пишут и более опытные тоже))
Тут идет привязка по классу ко всем полям и достаточно только наклепать инпутов с разными именами и классом q. Но чекбоксы тут не подойдут, только радиобатн )))

Обычно новички проверяют каждый инпут. А остальные пишут как захотят, но все таки учитывают количество вопросов, а не сверяют количество инпутов на странице с количеством ответов. Но создавать объекты, потом фильтровать на уники.. В общем это лишнее когда известно количество вопросов. И достаточно будет идти по списку инпутов допустим через for и если встретится не заполненный останавливать скрипт и не пускать пользователя дальше.

Ммм, для обособленной задачи можно и кукисы использовать, конечно в реальных условиях для такой задачи не используют куки, т.к. данные все равно нужно хранить на сервере, а не у клиента, а то смысл теряется. Хотя их можно оставить у юзера, а когда он ответит на последний вопрос отправить все на сервер, а там уже поставить ему балл и соответственно на сервере можно хранить только оценку, а не все ответы.

Да ссылка та.


Часовой пояс GMT +3, время: 01:46.