Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Подскажите пожалуйста


Автор: Muna 17.7.2008, 10:19
 smile Подскажите пожалйста возможно ли с помощу JavaSript и HTML создать програмку -тест в котой вопрос выбирался из множества вопросов генератором случайных чисел и на него било несколько вариантов ответа и в томже документе создать функцию котороя би смотрела правильно ли ответили?
если такое возможно то где эти вотросы писать вместе с вариантамы ответов? (в теле документа или же создавать какойто новый файл) и как привязать варианты ответов, что бы знать правильно ли ответили? (и если можно малеенький примерчик)

Я создала что подобное но вопроси у меня уже записаны а генерируется только "билет"  и ответы привязаны к радиокнопкам. smile 

буду очень благодарна за помощ 

Автор: bars80080 17.7.2008, 10:25
массив вопросов, к каждому привязан массив ответов, есть отметка правильного ответа
пишем их в теле документа, затем случайным образом выводим, собственно всё

но на js делать тест - неблагодарное занятие, практической ценности нет, ведь всё можно посмотреть

Автор: Muna 17.7.2008, 11:25
А можно маааленький примерчик?

Автор: bars80080 17.7.2008, 12:17
маленький не получится
Код

<script>
var mv_bil = new Array();
// структура: вопрос, номер правильного ответа, ответы ( 0 1 2 ...)
mv_bil[0] = new Array('Почём фунт лиха?',2,'чушь какая-то','червонец','полтиник','одна душа');
mv_bil[1] = new Array('Где живёт ландух?',2,'чушь какая-то','там','здесь','тут');
mv_bil[2] = new Array('Кто колобок?',2,'чушь какая-то','там','здесь','тут');
mv_bil[3] = new Array('Чем питается чебурашка?',2,'чушь какая-то','там','здесь','тут');
mv_bil[4] = new Array('Где раки свистят?',2,'чушь какая-то','там','здесь','тут');
function ask() {
    var num = Math.floor((Math.random())*(mv_bil.length));
    var mas = mv_bil[num];
    query = '<p>' + mas[0] + '</p><select id="sel"><option></option>';
    for(i = 2; i < mas.length; i++) {
        query += '<option>' + mas[i] + '</option>\r\n';
    }
    query += '</select><input type="button" value="ответить" onclick="resp(' + num + ');" />\r\n';
    var que = document.getElementById('questions');
    que.innerHTML = query;
}
function resp(num) {
    var respond = document.getElementById('sel').selectedIndex - 1;
    if(respond == mv_bil[num][1]) alert('правильный ответ');
    else alert('неправильный ответ');    
}
</script>
<div id="questions"></div>
<input id="bask" type="button" value="хочу вопрос" onclick="ask();" />


Автор: Muna 17.7.2008, 14:38
Огромное спасибо!!! 
 smile 
А можна как –то вместо меню выбора радиокнопки поставить с текстом?

Если и здесь поможеж, я тебе просто розцелую!  smile 

Автор: bars80080 17.7.2008, 15:09
эх
Код

<script>
var mv_bil = new Array();
// структура: вопрос, номер правильного ответа, ответы ( 0 1 2 ...)
mv_bil[0] = new Array('Почём фунт лиха?',2,'чушь какая-то','червонец','полтиник','одна душа');
mv_bil[1] = new Array('Где живёт ландух?',2,'чушь какая-то','там','здесь','тут');
mv_bil[2] = new Array('Кто колобок?',2,'чушь какая-то','там','здесь','тут');
mv_bil[3] = new Array('Чем питается чебурашка?',2,'чушь какая-то','там','здесь','тут');
mv_bil[4] = new Array('Где раки свистят?',2,'чушь какая-то','там','здесь','тут');
function ask1() {
    var num = Math.floor((Math.random())*(mv_bil.length));
    var mas = mv_bil[num];
    query = '<p>' + mas[0] + '</p><p id="sel">';
    for(i = 2; i < mas.length; i++) {
        query += '<input type="radio" name="sel1" value="' + (i - 2) + '" />' + mas[i] + '<br />\r\n';
    }
    query += '<input type="button" value="ответить" onclick="resp1(' + num + ');" />\r\n';
    var que = document.getElementById('questions');
    que.innerHTML = query;
}
function resp1(num) {
    var respond = document.getElementById('sel').getElementsByTagName('input');
    var flag = false;
    for(i = 0; i < respond.length; i++) {
        if(respond[i].checked == true && respond[i].value == mv_bil[num][1]) { alert('правильный ответ'); flag = true; break; }}
    if(!flag) alert('неправильный ответ');    
}
</script>
<div id="questions"></div>
<input id="bask" type="button" value="хочу вопрос" onclick="ask1();" />

Автор: Muna 17.7.2008, 16:53
ой, а как задать если выпал например 2-ой вопрос что б открылся любой рисунок (.jpg) выше или ниже вопроса
 smile 

Автор: bars80080 17.7.2008, 17:04
Цитата(Muna @  17.7.2008,  16:43 Найти цитируемый пост)
А как можно сделать что бы на каждый неправильный ответ возникало окошко с обьяснением, например если не правильно ответить на вопрос Кто колобок? появлялось обяснение "Колобок это главный герой сказки", а к другим вопросам своё конкретное обьяснение?


Код

<script>
var mv_bil = new Array();
// структура: вопрос, номер правильного ответа, ответы ( 0 1 2 ...)
mv_bil[0] = new Array('Почём фунт лиха?','фунт - английская мера веса',2,'чушь какая-то','червонец','полтиник','одна душа');
mv_bil[1] = new Array('Где живёт ландух?','ландух - почти подсолнух',2,'чушь какая-то','там','здесь','тут');
mv_bil[2] = new Array('Кто колобок?','колобок - вкусный',2,'чушь какая-то','там','здесь','тут');
mv_bil[3] = new Array('Чем питается чебурашка?','чебурашка настоящий друг Гены',2,'чушь какая-то','там','здесь','тут');
mv_bil[4] = new Array('Где раки свистят?','раки - икар наоборот',2,'чушь какая-то','там','здесь','тут');
function ask1() {
    var num = Math.floor((Math.random())*(mv_bil.length));
    var mas = mv_bil[num];
    query = '<p>' + mas[0] + '</p><p id="sel">';
    for(i = 3; i < mas.length; i++) {
        query += '<input type="radio" name="sel1" value="' + (i - 3) + '" />' + mas[i] + '<br />\r\n';
    }
    query += '<input type="button" value="ответить" onclick="resp1(' + num + ');" />\r\n';
    var que = document.getElementById('questions');
    que.innerHTML = query;
}
function resp1(num) {
    var respond = document.getElementById('sel').getElementsByTagName('input');
    var flag = false;
    for(i = 0; i < respond.length; i++) {
        if(respond[i].checked == true && respond[i].value == mv_bil[num][2]) { alert('правильный ответ'); flag = true; break; }}
    if(!flag) alert('неправильный ответ\r\n' + mv_bil[num][1]);    
}
</script>
<div id="questions"></div>
<input id="bask" type="button" value="хочу вопрос" onclick="ask1();" />
 а вот с этим вопросом могли и сами догадаться

Добавлено через 11 минут и 27 секунд
вставьте перед 16-ой строчкой:
Код

if(num == 2) { query += '<img src="pic.jpg" />'; }

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)