javascript - 2 个相互连接的下拉列表(第二个取决于第一个)

标签 javascript jquery html

我正在尝试解决以下要求的练习:“也使用 javascript 创建一个 HTML 页面,其中包含一个下拉列表,您可以在其中选择州,另一个下拉列表动态填充属于该国家/地区的城市。 我已经看到其他类似的问题并应用了建议,但它似乎仍然不起作用(第二个下拉列表保持为空)。

 <html>
    <head>

     <script type = "text/javascript">

    function update()
{
var albania = ["Tirana","Durres","Vlore","Shkoder"];
var kosovo = ["Prishtina","Mitrovica","Peje","Gjakove"];
var germany = ["Berlin","Frankfurt","Hannover","Bonn"];

var  countries = document.getElementById("1");
var cities = document.getElementById("2");
var selected = countries.options[countries.selectedIndex].value;

if(selected=="1"){
for(var i = 0; i < albania.length; i++) {
    var opt1 = document.createElement('option');
    opt1.innerHTML = albania[i];
    opt1.value = albania[i];
    cities.appendChild(opt1);
}
}
else if(selected=="2")
{
for(var j = 0; j < kosovo.length; j++) {
    var opt2 = document.createElement('option');
    opt2.innerHTML = kosovo[j];
    opt2.value = kosovo[j];
    cities.appendChild(opt2);
}
}
else if(selected=="3")
{
for(var k = 0; k < germany.length; k++) {
    var opt3 = document.createElement('option');
    opt3.innerHTML = germany[k];
    opt3.value = germany[k];
    cities.appendChild(opt3);
}
}
 else
var t =0;
 }
    </script>

    </head>

  <body>

    <p><select  id= "1" onchange="update()">
       <option selected = "selected" >Select Country</option>
       <option value="1">Albania</option>
       <option value="2">Kosovo</option>
       <option value="3">Germany</option>
       </select>
       </p>

    <p><select  id="2">
       <option selected = "selected" ></option>


    </body>
    </html>`"

最佳答案

这里是Working Example根据您的要求。

Javascript:

var albania = ["Tirana","Durres","Vlore","Shkoder"];
var kosovo = ["Prishtina","Mitrovica","Peje","Gjakove"];
var germany = ["Berlin","Frankfurt","Hannover","Bonn"];


document.getElementById("1").addEventListener("change", function(e){
        var select2 = document.getElementById("2");
        select2.innerHTML = "";
        var aItems = [];
    if(this.value == "2"){
        aItems = kosovo;
    } else if (this.value == "3") {
        aItems = germany;
    } else if(this.value == "1") {
        aItems = albania;
    }
    for(var i=0,len=aItems.length; i<len;i++) {
        var option = document.createElement("option");
        option.value= (i+1);
        var textNode = document.createTextNode(aItems[i]);
        option.appendChild(textNode);
        select2.appendChild(option);
    }

}, false);

HTML:

<p><select  id= "1">
       <option selected = "selected" >Select Country</option>
       <option value="1">Albania</option>
       <option value="2">Kosovo</option>
       <option value="3">Germany</option>
       </select>
       </p>

    <p><select  id="2">
        <option selected = "selected" ></option></select></p>

关于javascript - 2 个相互连接的下拉列表(第二个取决于第一个),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31224830/

相关文章:

javascript - 在 select2 中捕获回车键

javascript - jQuery 支持 ":invalid"选择器

css - DIV 在 DIV 100% 高度内,古老的谜语

javascript - 我无法让 onChange 触发 dijit.form.Select

java - 如何将自定义 ScrollPanel 的高度设置为 100%?

javascript - URI 错误 : malformed URI sequence?

jquery - 添加一个 toggleClass on Click 函数,如何用它添加一个新的悬停?

javascript - 一旦 [ ] 被 < > 替换,文本将变为空白

javascript - canvas绘制图像和范围问题

javascript - 下拉菜单因引用而不起作用