怎么实现HTML省市区

怎么实现HTML省市区,第1张

由于字数限制,只写了三个省,望采纳

<!DOCTYPE html>

 

  <head>

    <title> 三级联动 </title>

    <meta charset="utf-8">

  </head>

 

  <body>

 

    <script>

   

      window.onload = function() {

        console.log(city)

        var oDiv = document.getElementById("div")

        var sheng = document.createElement("select")

        var shi = document.createElement("select")

        var qu = document.createElement("select")

        oDiv.appendChild(sheng)

        oDiv.appendChild(shi)

        oDiv.appendChild(qu)

        sheng.options[0] = new Option("请选择省", "-1")

        shi.options[0] = new Option("请选择市", "-1")

        qu.options[0] = new Option("请选择区", "-1")

        //创建省市区完毕

        //循环第一步

        for (var i = 0 i < city.length i++) {

          sheng.options[sheng.length] = new Option(city[i].name, i)

          sheng.onchange = function() {

            //恢复默认选项

            //shi.options[0].selected = true

            //qu.options[0].selected = true

            //清空市区选项

            shi.options.length = 0

            shi.options[shi.length] = new Option("请选择市", "-1")

            qu.options.length = 0

            qu.options[qu.length] = new Option("请选择区", "-1")

            for (var j = 0 j < city[sheng.selectedIndex - 1].city.length j++) {

              shi.options[shi.length] = new Option(city[sheng.selectedIndex - 1].city[j].name, j)

              shi.onchange = function() {

                //恢复默认选项

                //qu.options[0].selected = true

                //清空区选项

                qu.options.length = 0

                qu.options[qu.length] = new Option("请选择区", "-1")

                for (var k = 0 k < city[sheng.selectedIndex - 1].city[shi.selectedIndex - 1].area.length k++) {

                  qu.options[qu.length] = new Option(city[sheng.selectedIndex - 1].city[shi.selectedIndex - 1].area[k], k)

                   

                }

              }

            }

          }

        }

      }

    </script>

    <div id='div'></div>

  </body>

<script type="text/javascript">

  var city = [

 

{ "name": "北京", "city": [{ "name": "北京", "area": ["东城区", "西城区", "崇文区", "宣武区", "朝阳区", "丰台区", "石景山区", "海淀区", "门头沟区", "房山区", "通州区", "顺义区", "昌平区", "大兴区", "平谷区", "怀柔区", "密云县", "延庆县"] }] },

 

{ "name": "天津", "city": [{ "name": "天津", "area": ["和平区", "河东区", "河西区", "南开区", "河北区", "红桥区", "塘沽区", "汉沽区", "大港区", "东丽区", "西青区", "津南区", "北辰区", "武清区", "宝坻区", "宁河县", "静海县", "蓟 县"] }] },

 

{

  "name": "河北", "city": [

 

      { "name": "石家庄", "area": ["长安区", "桥东区", "桥西区", "新华区", "郊 区", "井陉矿区", "井陉县", "正定县", "栾城县", "行唐县", "灵寿县", "高邑县", "深泽县", "赞皇县", "无极县", "平山县", "元氏县", "赵 县", "辛集市", "藁", "晋州市", "新乐市", "鹿泉市"] },

 

      { "name": "唐山", "area": ["路南区", "路北区", "古冶区", "开平区", "新 区", "丰润县", "滦 县", "滦南县", "乐亭县", "迁西县", "玉田县", "唐海县", "遵化市", "丰南市", "迁安市"] },

 

      { "name": "秦皇岛", "area": ["海港区", "山海关区", "北戴河区", "青龙满族自治县", "昌黎县", "抚宁县", "卢龙县"] },

 

      { "name": "邯郸", "area": ["邯山区", "丛台区", "复兴区", "峰峰矿区", "邯郸县", "临漳县", "成安县", "大名县", "涉 县", "磁 县", "肥乡县", "永年县", "邱 县", "鸡泽县", "广平县", "馆陶县", "魏 县", "曲周县", "武安市"] },

 

      { "name": "邢台", "area": ["桥东区", "桥西区", "邢台县", "临城县", "内丘县", "柏乡县", "隆尧县", "任 县", "南和县", "宁晋县", "巨鹿县", "新河县", "广宗县", "平乡县", "威 县", "清河县", "临西县", "南宫市", "沙河市"] },

 

      { "name": "保定", "area": ["新市区", "北市区", "南市区", "满城县", "清苑县", "涞水县", "阜平县", "徐水县", "定兴县", "唐 县", "高阳县", "容城县", "涞源县", "望都县", "安新县", "易 县", "曲阳县", "蠡 县", "顺平县", "博野", "雄县", "涿州市", "定州市", "安国市", "高碑店市"] },

 

      { "name": "张家口", "area": ["桥东区", "桥西区", "宣化区", "下花园区", "宣化县", "张北县", "康保县", "沽源县", "尚义县", "蔚 县", "阳原县", "怀安县", "万全县", "怀来县", "涿鹿县", "赤城县", "崇礼县"] },

 

      { "name": "承德", "area": ["双桥区", "双滦区", "鹰手营子矿区", "承德县", "兴隆县", "平泉县", "滦平县", "隆化县", "丰宁满族自治县", "宽城满族自治县", "围场满族蒙古族自治县"] },

 

      { "name": "沧州", "area": ["新华区", "运河区", "沧 县", "青 县", "东光县", "海兴县", "盐山县", "肃宁县", "南皮县", "吴桥县", "献 县", "孟村回族自治县", "泊头市", "任丘市", "黄骅市", "河间市"] },

 

      { "name": "廊坊", "area": ["安次区", "固安县", "永清县", "香河县", "大城县", "文安县", "大厂回族自治县", "霸州市", "三河市"] },

 

      { "name": "衡水", "area": ["桃城区", "枣强县", "武邑县", "武强县", "饶阳县", "安平县", "故城县", "景 县", "阜城县", "冀州市", "深州市"] }

 

  ]

}

]

</script>

</html>

这个叫做省市联动 要用二维数组

var arrsheng[]={"湖南","湖北"}

var arr["湖南"]={"株洲","长沙"}

选中第一个后 就能够获得 湖南 或者湖北这种值

然后 下一个框绑定的就是 arr["湖南"]这里面的元素

js支持 自动以下标 不像java c#那种 只能数字做下标

所以这种省市联动效果 就很简单了·

省 id是A,市 id是B,区 id是C

用jquery的方式

$("#A").change(function(){

    var aValue = $("#A").val() //这里获取A中对应option的value

    var bHtml=.... //然后根据A的值获取B的值,然后将得到的值拼成option

    $("#B").html(bHtml)

})

$("#B").change(function(){

    var aValue = $("#A").val() //这里获取A中对应option的value,如果可以直接通过B的值就可以获取C的值,这步可以省略

    var bValue = $("#B").val() //这里获取B中对应option的value

    var cHtml=.... //然后根据B(和A)的值获取C的值,然后将得到的值拼成option

    $("#C").html(cHtml)

})


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/6094119.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-14
下一篇 2023-03-14

发表评论

登录后才能评论

评论列表(0条)

保存