Формування зв’язаних списків select довільної вкладеності
Не слабшає інтерес до питання про динамічне створення пов'язаних випадаючих HTML списків. Для двох залежних списків (я публікував приклад понад 5 років тому!) ситуація проста і зрозуміла, але люди запитують — а як розвинути приклад для вкладення 3-х списків?
Відповідь – ніяк. :) Доведеться міняти практично все, тому слово -міняти тут не підходить. Я вирішив написати універсальний приклад, який працюватиме з будь-якою вкладеністю списків.
Так як вкладеність у нас не обмежена, то довільно ми маємо не багатовимірну таблицю — а дерево варіантів. Тобто. десь ми заглибимося на три рівні, а десь — тільки на один.
Вхідний масив даних потрібно сильно змінити. Тепер це не плоский масив, багаторівнева матрьошка з об'єктів та масивів. Структура матрьошки дуже умовна, може бути змінена, але для прикладу потрібно було сформулювати те, як ми описуємо дані. Інакше як написати програму?
Опис завдання
Ми маємо справу з гіпотетичним прайсом на послуги заправки картриджів, де спочатку треба вибрати марку принтера, потім модель принтера, далі терміновість заправки; і тоді ви отримаєте довідку про вартість послуг. Але в деяких випадках може виявитися, що модель принтера або терміновість надання послуг не є важливими, тобто ми відразу повинні показати ціни.
Структура даних
Почнемо з опису структури даних. Найнижчий рівень матрьошки описує перший рівень, перший зі списків, що випадають.