Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Перемешать варианты ответов (https://javascript.ru/forum/misc/8008-peremeshat-varianty-otvetov.html)

demix 02.03.2010 21:32

Перемешать варианты ответов
 
Здравствуйте! Пишу курсовую работу, все вроде уже готово, но вот решил немного увеличить качество теста. Суть проблемы:
есть страница с вопросами (5 штук) и на каждый вопрос есть три варианта ответа:
a первый вариант
b второй вариант
с третий вариант
необходимо. что бы каждый раз при обновлении страницы положение этих вариантов изменялось abc acb cab bac и т.д.
получилось сделать только для одного вопроса:
яваскрипт
<script type="text/javascript">
function getRandom() {
   sluchai= Math.random(); // получаем случайное число от 0 до 1
   umnozh= sluchai*10;			 // умножим на 10
   celoe= Math.round(umnozh); // округлим до целых
}
getRandom();
var a='<input type=radio value="a">Личностные качества индивида<br>';
var b='<input type=radio value="b">Разработка психологических тестов<br>';
var c='<input type=radio value="c" >Психологические свойства личности<br>';
</script>

хтмл
<body>
<form>
<br><b>1. Объект психодиагностики?</b><br>
<script type="text/javascript">
if (celoe>=4){
		if (celoe>=6){
			if (celoe>=9) { document.write(b+c+a);}
				else {  document.write(c+a+b);}
				}
		else {document.write(a+b+c);}
	}
else {document.write(a+c+b);}
</script> 
<b>2. Основной метод психодиагностики</b><br>
<input type=radio value="a">Дифференциально-диагностическое исследование<br>
<input type=radio value="b" >Лонгитюдное исследование<br>
<input type=radio value="c" >Патопсихологическое исследование личности<br><br>

</form>
</body>
</html>


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

Мараторий 03.03.2010 01:01

Если не секрет, где учитесь?

JsLoveR 03.03.2010 01:34

demix,
Создайте массив вариантов ответа, которые будут записываться в переменные abc, проходя циклом, а abc записывайте в массив(var massive=[a,b,c]) и генерируйте в случайном порядке без повторений.

e1f 03.03.2010 09:36

var a = [1,2,3,4,5];
for ( var i = a.length; i-->0; ) {
    var t = a[i], 
        j = Math.floor(i*Math.random()); 
    a[i] = a[j]; 
    a[j] = t; 
}
alert(a)

demix 03.03.2010 23:25

Вообще не секрет, военно-психологический факультет.
JsLoveR, а можешь сделать пример для двух вопросов или для трех, а то я совсем не шарю в JS
e1f, если не трудно набросай пример. буду благодарен


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