博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用JavaScript实现动态省市县三级联动
阅读量:5982 次
发布时间:2019-06-20

本文共 2896 字,大约阅读时间需要 9 分钟。

    像平时购物选择地址时一样,通过选择的省动态加载城市列表,通过选择的城市动态加载县区列表,从而可以实现省市县的三级联动,下面使用原生的JavaScript来实现这个功能:

    
    
三级联动测试    
    
        //用来获得option元素中selected属性为true的元素的id        function Get_Selected_Id(place){            var pro = document.getElementById(place);            var Selected_Id = pro.options[pro.selectedIndex].id;            return Selected_Id;         //返回selected属性为true的元素的id        }        //改变下一个级联的option元素的内容,即加载市或县        function Get_Next_Place(This_Place_ID,Action){            var Selected_Id = Get_Selected_Id(This_Place_ID);   //Selected_Id用来记录当前被选中的省或市的ID            if(Action=='Get_city')                            //从而可以在下一个级联中加载相应的市或县                Add_city(Selected_Id);            else if(Action=='Get_country')                Add_country(Selected_Id);        }        //用来存储省市区的数据结构        var Place_dict = {            "GuangDong":{                            "GuangZhou":["PanYu","HuangPu","TianHe"],                            "QingYuan":["QingCheng","YingDe","LianShan"],                            "FoShan":["NanHai","ShunDe","SanShui"]                            },            "ShanDong":{                            "JiNan":["LiXia","ShiZhong","TianQiao"],                            "QingDao":["ShiNan","HuangDao","JiaoZhou"]                            },            "HuNan":{                            "ChangSha":["KaiFu","YuHua","WangCheng"],                            "ChenZhou":["BeiHu","SuXian","YongXian"]                        }        };        //加载城市选项        function Add_city(Province_Selected_Id){            $("#city").empty();            $("#city").append("
");            $("#country").empty();            $("#country").append("
");            //上面的两次清空与两次添加是为了保持级联的一致性            var province_dict = Place_dict[Province_Selected_Id];   //获得一个省的字典            for(city in province_dict){     //取得省的字典中的城市                //添加内容的同时在option标签中添加对应的城市ID                var text = "
"+city+"";                $("#city").append(text);                console.log(text);  //用来观察生成的text数据            }        }        //加载县区选项        function Add_country(City_Selected_Id){            $("#country").empty();            $("#country").append("
");            //上面的清空与添加是为了保持级联的一致性            var Province_Selected_ID = Get_Selected_Id("province");     //获得被选中省的ID,从而方便在字典中加载数据            var country_list = Place_dict[Province_Selected_ID][City_Selected_Id];  //获得城市列表            for(index in country_list){                添加内容的同时在option标签中添加对应的县区ID                var text = "
"+country_list[index]+"";                $("#country").append(text);                console.log(text);  //用来观察生成的text数据            }        }        

您的收货地址:

    
        
Province        
GuangDong        
ShanDong        
HuNan        
        
City        
        
Country        

    测试结果如下:

未做任何选择时:

选择时:

    当然,省市县三者都是动态联动的,只要顶级的内容发生改变,所有子级的内容也会发生改变或被重置为City或Country.

转载地址:http://hieox.baihongyu.com/

你可能感兴趣的文章
rabbitmq中文教程python版 - 工作队列
查看>>
基于 Redis 的分布式锁
查看>>
STL学习-vector
查看>>
java9系列(八)Multi-Release JAR Files
查看>>
70行python代码实现壁纸批量下载
查看>>
可能是最详细的部署:Docker Registry企业级私有镜像仓库Harbor管理WEB UI
查看>>
在 React 工程中利用 Mota 编写面向对象的业务模型
查看>>
Cocos Creator—最佳构建部署实践
查看>>
从零开始打造自己的PHP框架——第4章
查看>>
SpringBoot 1024行代码 - Eureka Server
查看>>
走近 Python (类比 JS)
查看>>
ELSE 技术周刊(2017.11.13期)
查看>>
HTTP/2 服务器推送(Server push)实践
查看>>
Node 错误处理之挖坑系列
查看>>
vue 项目开发 lenovo商城
查看>>
来自crush的中序遍历完全二叉树
查看>>
生产环境项目部署目录
查看>>
Laravel 5.5 中文文档翻译完成(包含文档离线下载地址)
查看>>
关于javascript中的作用域和作用域链
查看>>
iView 一周年了,同时发布了 2.0 正式版,但这只是开始...
查看>>