如何创建:级联下拉列表

学习如何使用 JavaScript 创建级联下拉列表。

spróbuj sam

创建三个下拉列表

在 HTML 表单内创建三个下拉列表。

第二个和第三个下拉列表将显示不同的选项,具体取决于父下拉列表中选择的值。

第一步 - 添加 HTML:

<form name="form1" id="form1" action="/action_page.php">
  Subjects: <select name="subject" id="subject">
    <option value="" selected="selected">Select subject</option>
  </select>
  <br><br>
  Topics: <select name="topic" id="topic">
    <option value="" selected="selected">Please select subject first</option>
  </select>
  <br><br>
  Chapters: <select name="chapter" id="chapter">
    <option value="" selected="selected">Please select topic first</option>
  </select>
  <br><br>
  <input type="submit" value="Submit">
</form>

第二步 - 添加 JavaScript:

var subjectObject = {
  "Front-end": {
    "HTML": ["Links", "Images", "Tables", "Lists"],
    "CSS": ["Krawędzie", "Marginesy", "Tła", "Float"]
    "JavaScript": ["Zmienne", "Operatory", "Funkcje", "Warunki"]
  },
  "Back-end": {
    "PHP": ["Zmienne", "Ciągi", "Tablice"],
    "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() {
    // wyczyść menu rozwijane "rozdziały" i "tematy"
    chapterSel.length = 1;
    topicSel.length = 1;
    // wyświetl poprawną wartość
    for (var y in subjectObject[this.value]) {
      topicSel.options[topicSel.options.length] = new Option(y, y);
    }
  }
  topicSel.onchange = function() {
    // wyczyść menu rozwijane "rozdziały"
    chapterSel.length = 1;
    // wyświetl poprawną wartość
    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]);
    }
  }
}

spróbuj sam

strony związané

Tutorial:CSS menu rozwijane

Tutorial:Jak stworzyć menu rozwijane można zawiesić