Как создать: каскадные выпадающие списки

Узнайте, как использовать JavaScript для создания каскадных выпадающих списков.

Попробуйте сами

Создайте три выпадающих списка

Создайте три выпадающих списка в HTML-форме.

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

Шаг 1 - Добавление HTML:

<form name="form1" id="form1" action="/action_page.php">
  Предметы: <select name="subject" id="subject">
    <option value="" selected="selected">Выберите предмет</option>
  </select>
  <br><br>
  Темы: <select name="topic" id="topic">
    <option value="" selected="selected">Выберите предмет сначала</option>
  </select>
  <br><br>
  Разделы: <select name="chapter" id="chapter">
    <option value="" selected="selected">Выберите тему сначала</option>
  </select>
  <br><br>
  <input type="submit" value="Подтвердить">
</form>

第二步 - Добавление JavaScript:

var subjectObject = {
  "Фронт-энд": {
    "HTML": ["Ссылки", "Изображения", "Таблицы", "Списки"],
    "CSS": ["Рамки", "Отступы", "Фон", "Плавающие элементы"]
    "JavaScript": ["Переменные", "Операторы", "Функции", "Условия"]
  },
  "Back-end": {
    "PHP": ["Переменные", "Строки", "Массивы"],
    "SQL": ["SELECT", "UPDATE", "DELETE"]
  }
}
window.onload = function() {
  var subjectSel = document.getElementById("subject");
  var topicSel = document.getElementById("topic");
  var chapterSel = document.getElementById("chapter");
  for (var x in subjectObject) {
    subjectSel.options[subjectSel.options.length] = new Option(x, x);
  }
  subjectSel.onchange = function() {
    // Очистить списки выбора главы и темы
    chapterSel.length = 1;
    topicSel.length = 1;
    // Показать правильное значение
    for (var y in subjectObject[this.value]) {
      topicSel.options[topicSel.options.length] = new Option(y, y);
    }
  }
  topicSel.onchange = function() {
    // Очистить список выбора главы
    chapterSel.length = 1;
    // Показать правильное значение
    var z = subjectObject[subjectSel.value][this.value];
    for (var i = 0; i < z.length; i++) {
      chapterSel.options[chapterSel.options.length] = new Option(z[i], z[i]);
    }
  }
}

Попробуйте сами

Связанные страницы

Урок:CSS-спускающийся список

Урок:Как создать спускающийся список с наведением