基於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.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實現級聯列表

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM