基于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.onload=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实现级联列表

时间: 2024-07-30 17:50:38

基于JSON的级联列表实现的相关文章

js基于json的级联下拉框

级联下拉列表是项目中常用到的.比如省市县,比如企业性质等,做成一个js通用组件, 在静态页出来后可以直接插入,将数据和html静态页做一个解耦. 贴出来抛砖引玉吧. <html> <script type="text/javascript"> /** 基于json的级联下拉列表,支持初始化 调用eg: var comboselect = ComboSelectFactory(data, 'p1', 'p2', 'p3', 'p4'); 设定下拉列表value,t

基于数组的级联列表

1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 <html xmlns="http://www.w3.org/1999/xhtml"> 3 <head> 4 <meta http-equiv="

基于Backbone的邮件列表

邮件列表 截图 源代码如下 <!DOCTYPE> <html> <head> <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> <title>邮件列表 by 张旭</title> <style type="text/css"> #FolderList{ background-c

使用NPOI生成Excel级联列表

目录 1    概要    1 2    磨刀不误砍柴工——先学会Excel中的操作    2 3    利用NPOI生成导入模板    7 3.1    设置workbook&sheet    8 3.2    生成数据Sheet,并按规则列好    8 3.3    添加名称,并指定数据范围(绑定数据源)    9 3.4    写入大类和小类的数据验证    11 概要 博客使用Word发博,发布后,排版会出现很多问题,敬请谅解.另外Word发博代码格式显示凌乱,因此相关代码均使用图片替代

SP2010通过jQuery实现级联列表

? 使用SPService的SPCascadeDropdowns来实现. 可以参考http://www.cnblogs.com/Sunmoonfire/archive/2010/09/11/1823678.html来实施. 下载SPService js包,从http://spservices.codeplex.com/获取 下载jQuery js包,从www.jquery.com获取,推荐1.10以上版本 将SPService和jQuery包上传至SharePoint站点的文档库中,比如网站资产

基于json数据格式实现的简单数据库——jsonDB

已在github上建立项目:https://github.com/ThinkerCodeChina/jsonDB /** +----------------------------------------- * jsonDB 基于json数据格式构建的数据模型 +----------------------------------------- * @description 对json数据检索,删除,查询和更新 * @author 戚银(web程序员) [email protected] * @

拜拜了,浮动布局-基于display:inline-block的列表布局——张鑫旭

一.一抹前言 没有爱的日子,时间如指尖细沙,不知不觉就流逝了.写“CSS float浮动的深入研究.详解及拓展(一)”和“CSS float浮动的深入研究.详解及拓展(二)”似乎就在不久前,然而相隔差不多有一年之久了.文章最后留下了“浮动布局更好的替代方案是什么?”后文再介绍的预告. 由于自己肚子中的货物不足以撑起一篇足够质量的文章,所以关于“浮动布局更好的替代方案是什么?”的文章一直并未动笔.好在事物总是在发展的,我也是每天都是在进步,对于列表布局的思考也愈发成熟.加上正好前不久又有人询问我“

基于泛型的数组列表

在<数组和数组列表>那篇随笔里我们定义了一个int类型的数组列表,但是这样实际上是有问题的,在日后的开发中我们使用的数组列表实际上并不一定是int类型的,甚至于,还不一定会是基本数据类型的.那这个时候,按照原来的方法,我们在开发中每要定义一个数组列表,我们就要重写一遍,这样做实际上是非常不友好的.那么有什么方法来解决这一问题呢,这样我们便引出了泛型这个概念 泛型 什么是泛型?泛型简单来理解实际上就是一个类类型,它是表示一个类的类型,而不具体表示某一个对象.由于在此重点是数组列表,关于泛型的其他

CDIF:基于JSON的SOA软件框架

通用设备互联框架(CDIF)是一个基于web的连接框架,目前有部分开源实现存放在: GitHub - out4b/cdif: Common device interconnect framework.CDIF是一种基于JSON的SOA软件框架.CDIF为客户端app提供了与基于XML的WSDL语言和SOAP协议同等抽象能力.但简洁得多的基于JSON的实现,也非常适合用于描述微服务架构的API接口.CDIF提供了完整的服务注册和发现能力,并为所有的web服务和物联网设备,包括REST.SOAP类型