Jump to content
  • 0

Навигация по дереву вопросов


Dimaz
 Share

Question

Привет всем. Подскажите, пожалуйста, как организовать навигацию по дереву вопросов. С сервера приходят данные в формате json, содержащие список вопросов и ответов. Также хранятся идентификаторы, связывающие ответы с вопросами. Т.е. какой будет загружен следующий вопрос, в зависимости от выбранного ответа.

Как лучше поступить? Сразу вывести все вопросы на страницу или выводить поочередно, по мере выбора ответов. Во втором случае придется хранить данные в глобальном массиве.

Привожу примерную структуру дерева:

___ 1 ____вопрос

1___2 ответы

2___3 вопросы

1 _2 1_ 2 ответы

Как переключаться вперед понятно, каждый ответ будет хранить id следующего вопроса, связанного с данным ответом. Но как возвращаться назад? Если вернуться назад, выбрать другой ответ, т.е. пойти по другой ветке, структура нарушится. Пример. Пользователь выбрал первый ответ, перешел на вопрос №2, потом вернулся к первому и выбрал второй ответ, ведущий на вопрос №3. Нажимаем назад и вместо первого вопроса возвращаемся ко второму. Ничего не приходит в голову. Единственный вариант, создавать несколько кнопок Назад и каждой присваивать значение предыдущего вопроса. Как вы поняли, вопросы будут переключаться изменением css свойства display. Значения block и none.

Link to comment
Share on other sites

3 answers to this question

Recommended Posts

  • 0

Должно все хорошо получаться. Следующий вопрос лучше подгружать по запросу с сервера, меньше повода читирить будет.

Почитайте про Детерминированный Конечный Автомат, будете щелкать такие задачки как семки.

h_1368642042_1997543_93737755eb.png

Link to comment
Share on other sites

  • 0

ну вот картинка иллюстрирует ваше дерево (если я вас правильно понял). Кружочки (состояния) это вопросы. Пунктирные кружочки (конечное состояние) это как бы финиш там будет результат прохождения ряда вопросов. Стрелки показывают варианты решений. Вот, в данном случае, из каждого состояния есть три пути (три решения), дать ответ №1 (стрелка 1), ответ №2 (стрелка 2) или вернуться на шаг назад (стрелка b ).

То есть если делать как вы привели пример, будет так:

1 --1--> 2 --b--> 1 --2--> 3 --b--> 1

Ошибки не получится из третьего вопроса по стрелке b вы попадаете к первому вопросу, а не ко второму

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy