@Minningt

Как сделать тест?

Приввет всем. Как сделать легкий тест, если вопросы известны и необходимо ответить "да/нет" и взависимости от ответа будет появляться другой вопрос с такими же ответами. Типа дерева. И надо скрыть все вопросы и оставить самый первый
jsfiddle.net/60t31z9g
Например, ты футболист? если да, то показываем вопрос "Карьера"? А предыдущий вопрос скрывать. и т.д
  • Вопрос задан
  • 201 просмотр
Пригласить эксперта
Ответы на вопрос 2
dzheka3d
@dzheka3d
Ответ написан
Комментировать
Deonisius
@Deonisius
Родился в 11110110111 году, 11000 января.
Типа дерева
Если "типа дерева", то в моем понимании - вопросы должны храниться в каком-то объекте. Вроде такого:
var q = {
    'Question 1' : {
        'Yes' : {
            'Question 1.1' : {
                'Yes' : 'Result',
                'No' : { /* ... */ }
            }
        },
        'No' : {
            'Question 1.2' : { /* ... */ }
        }
    }
};
Этот момент вы не указали, но если я угадал, то вариант может быть таким - jsfiddle.net/77ooxgwv
var q = {
    'Вы ненормальный?': {
        1: 'Windows Phone',
        0: {
            'Вы гей?': {
                1: 'Apple',
                0: {
                    'Цвет смартфона розовый?': {
                        1: 'Apple',
                        0: 'Android'
                    }
                }
            }
        }
    }
},
tmpl = '<p>@</p><input type="radio" name="ans" value="1">Да <input type="radio" name="ans" value="0">Нет',
cur = q[Object.keys(q)[0]],
out = $('output').html(tmpl.replace(/@/, Object.keys(q)[0]));

out.on('change', ':radio', function () {
    cur = cur[$(this).val()];
    if (typeof cur === 'string') {
        out.html('Вам подойдёт <b>' + cur + '</b><br>Тест окончен!');
    } else {
        out.html(tmpl.replace(/@/, Object.keys(cur)[0]));
        cur = cur[Object.keys(cur)[0]];
    }
});
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы