js实现城市二级联动列表

  这个是一个同事写的,我看着有用,就cv下来了.

程序功能主要逻辑是:

1.当一级标签市显示默认状态 '-请选择-'时,二级标签要隐藏

2.一级标签选中城市时,二级标签显示在页面,并列出响应市区

3.当一级标签选回默认状态时,二级标签隐藏

<!DOCTYPE HTML>
<html>
<head>
<title>城市二级联动列表</title>
<meta charset="utf-8" />
<style>
    .hide{ display: none; }
</style>


</head>
<body>
    <select name="provs">
        <option>—请选择—</option><!--0-->
        <option>北京市</option><!--1-->
        <option>天津市</option>
        <option>河北省</option>
    </select>
    
    <select name="cities" class="hide">
    </select>
  <script>
    /*实现“省”和“市”的级联下拉列表*/
    var cities=[
      [{"name":'东城区',"value":101},
       {"name":'西城区',"value":102},
       {"name":'海淀区',"value":103},
       {"name":'朝阳区',"value":104}],//0
      [{"name":'河东区',"value":201},
       {"name":'河西区',"value":202},
       {"name":'南开区',"value":303}],
      [{"name":'石家庄市',"value":301},
       {"name":'廊坊市',"value":302},
       {"name":'保定市',"value":303},
       {"name":'唐山市',"value":304},
       {"name":'秦皇岛市',"value":304}]
    ];
    //查找两个select
  var selProvs=
    document.getElementsByName(
      "provs"
    )[0];
  var selCts=
    document.getElementsByName(
      "cities"
    )[0];
  //为selProvs绑定选中项改变事件
  selProvs.onchange=function(){
    //获得当前select选中项的下标
    var i=this.selectedIndex;
    if(i>0){
      //获得cities数组中i-1位置的子数组
      var cts=cities[i-1];
      //清空selCts的内容:
      selCts.innerHTML="";
      //创建文档片段
      var frag=
       document.createDocumentFragment();
      //创建一个option,内容为-请选择-,追加到selCts下
      var opt=
        document.createElement("option");
      opt.innerHTML="-请选择-";
      frag.appendChild(opt);
      //遍历cts中每个城市
      for(var i=0;i<cts.length;i++){
        //创建一个option,设置其内容为当前城市的name属性,设置其value为当前城市的value属性,追加到selCts中
        var opt=
          document.createElement("option");
        //cts[i]:
        // {"name":'东城区',"value":101}
        opt.innerHTML=cts[i]["name"];
        opt.value=cts[i]["value"];
        frag.appendChild(opt);
      }
      //将frag整体追加到selCts中
      selCts.appendChild(frag);
      //清除selCts的class
      selCts.className="";
    }else
      selCts.className="hide";
  }
</script>
</body>
</html>

  

原文地址:https://www.cnblogs.com/web-fusheng/p/6735670.html