基于JSON的级联列表实现

基于JSON的级联列表实现

1、采用JSON格式存储相应的数据;省份ProJSON,城市:cityJSON;

var proJSON={"1":"广东省","2":"湖北省"};
        var cityJSON={"1":{'020':'广州','0755':'深圳','0756':'珠海'},'2':{'027':'武汉','0710':'襄樊','0715':'赤壁'}}

2.页面加载完成后需要显示省份的下拉框,因此要读取ProJSON,通过for in循环添加option。

window.οnlοad=function(){
            var province=document.getElementById("province");
            for(temp in proJSON){
                province.add(new Option(proJSON[temp],temp));//参数分别是text,和value;text是用来显示出来的。
            }
        }

3.一旦省份下拉框触发onChange事件。

  首先,还原2级菜单;

  然后,获取选中的省份下标值;

  最后,根据下标值寻找相应的子数据;

        function setCity(){
            // 只要触发了此事件,则二级菜单必须还原
            var city=document.getElementById('city');
            city.options.length=1;
            // 获取被选中省会的下标值
            var val=document.getElementById("province").value;
            console.info("cityJSON:" + cityJSON[val]);
            // 如果没有选择任何省会信息则直接返回
            if(!cityJSON[val]) return;
            // 通过选中的值获取二级菜单的json数据
            var sonJSON=cityJSON[val];
            for(temp in sonJSON){
                city.add(new Option(sonJSON[temp],temp));    
            }
        }
        

完整的代码实现:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>基于数组级联列表</title>
    <script type="text/javascript">
        // JSON: 主要用于数据交换,其实JSON就是有格式的字符串
        var str='{"name":"demo","age":"18"}';
        console.info("当前类型为:" + typeof(str));
        // 把字符串转化为JSON格式
        var obj=JSON.parse(str);
        console.info("当前类型为:" + typeof(obj));
        // JSON输出访问的两种方式
        console.info(obj.name + "," + obj.age + "||" + obj['name'] + "," + obj['age']);
        
        for(temp in obj){
            console.info(temp + ":" + obj[temp]);//json中下标就是字符串;    
        }
        
        str=JSON.stringify(obj);//就是说把原来是对象的类型转换成字符串类型;
        console.info("当前类型为:" + typeof(str));
        
        
        // 采用JSON格式来存储相应的数据和编码
        var proJSON={"1":"广东省","2":"湖北省"};
        var cityJSON={"1":{'020':'广州','0755':'深圳','0756':'珠海'},'2':{'027':'武汉','0710':'襄樊','0715':'赤壁'}}
        
        window.onload=function(){
            var province=document.getElementById("province");
            for(temp in proJSON){
                province.add(new Option(proJSON[temp],temp));//参数分别是text,和value;text是用来显示出来的。
            }
        }
        
        function setCity(){
            // 只要触发了此事件,则二级菜单必须还原
            var city=document.getElementById('city');
            city.options.length=1;
            // 获取被选中省会的下标值
            var val=document.getElementById("province").value;
            console.info("cityJSON:" + cityJSON[val]);
            // 如果没有选择任何省会信息则直接返回
            if(!cityJSON[val]) return;
            // 通过选中的值获取二级菜单的json数据
            var sonJSON=cityJSON[val];
            for(temp in sonJSON){
                city.add(new Option(sonJSON[temp],temp));    
            }
        }
        
        
        
    </script>
</head>
<body>
   <!-- 数据的三种存储方式: 
            1: 数据库: 安全高、可以存储有结构但是耗资源
            2: properties: 存储非敏感数据,且Key value格式,省资源的
            3: XML: 存储非敏感数据,且支持有结构 目前一般用于配置文件
            4: 硬编码: 主要存储非敏感数据,且不改不的数据
   -->
   <select id="province" onChange="setCity()">
           <option value="">--选择省会--</option>
   </select>
   <select id="city">
           <option value="">--选择城市--</option>
   </select>
</body>
</html>
JSON实现级联列表

 

转载于:https://www.cnblogs.com/Aaron-dzl/p/5820971.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
2019全国省市级联json格式 省 市 区 街道 四级 [{"code":"110000","superCode":"000000","cityName":"北京","shortName":"北京"}, {"code":"120000","superCode":"000000","cityName":"天津","shortName":"天津"}, {"code":"130000","superCode":"000000","cityName":"河北省","shortName":"河北"}, {"code":"140000","superCode":"000000","cityName":"山西省","shortName":"山西"}, {"code":"150000","superCode":"000000","cityName":"内蒙古自治区","shortName":"内蒙古"}, {"code":"210000","superCode":"000000","cityName":"辽宁省","shortName":"辽宁"}, {"code":"220000","superCode":"000000","cityName":"吉林省","shortName":"吉林"}, {"code":"230000","superCode":"000000","cityName":"黑龙江省","shortName":"黑龙江"}, {"code":"310000","superCode":"000000","cityName":"上海","shortName":"上海"}, {"code":"320000","superCode":"000000","cityName":"江苏省","shortName":"江苏"}, {"code":"330000","superCode":"000000","cityName":"浙江省","shortName":"浙江"}, {"code":"340000","superCode":"000000","cityName":"安徽省","shortName":"安徽"}, {"code":"350000","superCode":"000000","cityName":"福建省","shortName":"福建"}, {"code":"360000","superCode":"000000","cityName":"江西省","shortName":"江西"}, {"code":"370000","superCode":"000000","cityName":"山东省","shortName":"山东"}, {"code":"410000","superCode":"000000","cityName":"河南省","shortName":"河南"}, {"code":"420000","superCode":"000000","cityName":"湖北省","shortName":"湖北"}, {"code":"430000","superCode":"000000","cityName":"湖南省","shortName":"湖南"}, {"code":"440000","superCode":"000000","cityName":"广东省","shortName":"广东"}, {"code":"450000","superCode":"000000","cityName":"广西壮族自治区","shortName":"广西"

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值