Связный список (или нет), как правильно в этом случае?

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

Как правильно, да и вообще как нужно делать, чтобы можно было управлять вариантами в большом кол-ве вопросов?

let arr = [

  {  'Выберите1': [
    'Первый',
    'Второй'
  ],
   
   'Выберите2': [
    'Первый',
    'Второй'
  ]
  }
//и так далее несколько объектов
];

  parseArray(l) {
    let item = '';
    for(let key in l) {
      let data = l[key];

      item += typeof data === 'string' ? `<li class="item">${data}</li>` : 
        `<div class="select">
          <button class="btn" tabindex="1">${key}</button>
          <ul class="list">${this.parseArray(data)}</ul>
        </div>`;
    }

    return item;
  }
  • Вопрос задан
  • 107 просмотров
Пригласить эксперта
Ответы на вопрос 2
Vlad_IT
@Vlad_IT Куратор тега JavaScript
Front-end разработчик
Можно добавить к каждому варианту параметр dependentList, который будет содержать массив вариантов из предыдущего вопроса. И если в предыдущем вопросе выбрали вариант из этого списка dependentList следующего вопроса, то этот вариант в следующем вопросе будет отображаться. Или же нужна глубина еще на два или несколько предыдущих вопроса?
Ответ написан
sergiks
@sergiks Куратор тега JavaScript
♬♬
Если я правильно понял задачу, нужно описывать ветвящийся сценарий выбора вариантов. И динамически рендерить следующий вопрос после сделанного выбора.

Можно описать всё дерево структурой с множеством уровней вложенности. Или придумать подобие адресации и добавлять / извлекать очередной вопрос с вариантами по «адресу»; тогда список будет без вложенностей, плоский.

Тут не предусмотрел повторные клики по более высоким элементам в иерархии. По хорошему, они должны удалять все нижестоящие выборки.
фиддл
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы