利用js實現省市區三級聯動


這里我們是將所有的省市區放在一個js文件當中,我們將他打印到打印台方便觀看

第一層數組包對象的形式 ,通過第一層我們可以獲取到省

第二層是對象包數組,通過數組children我們可以的到市

第三層同樣也是對象包數組的形式,可以得到區

首先建立三個下拉列表框

<select id="sheng"></select>
<select id="shi"></select>
<select id="qu"></select>

分別獲取他們的對象

        <script>
            console.log(data)
//            通過id分別獲取省市區下拉列表的對象
            var sheng=document.getElementById("sheng");
            var shi=document.getElementById("shi");
            var qu=document.getElementById("qu");

 

這里我們首先要區別innerHTML的屬性和innertext的屬性是不同的

inneHTML瀏覽器是可以解析整個HTML片段的;

innertext瀏覽器是不會解析的傳入的只是文本,字符串的形式;

實例:

<body>
        <ul id="ul">
            <li>語文</li>
            <li>數學</li>
            <li>英語</li>
        </ul>
        <script>
            var ul=document.getElementById("ul");
            console.log(ul.innerHTML);
            console.log(ul.innerText);
        </script>
    </body>

 

省:通過循環遍歷,將每一個省的name添加到建立的空字符串中

然后利用innerHTML瀏覽器會解析整個html片段的屬性,將整個字符串添加進去。

得到省的下拉列表框

var sheng_str="";/*定義一個空字符串*/
            for(i=0;i<data.length;i++){/*將省的列表循環添加到空字符串中*/
            sheng_str+="<option>"+data[i].name+"</option>"/*字符串拼接*/
            }
            sheng.innerHTML=sheng_str;

效果圖:

 

市:使用onchange事件當省的下拉列表值改變時讓市變化到對應的部分

  var shi_index;/*全局變量方便后面使用*/
            sheng.onchange=function(){
                qu.innerHTML="";/*清空區的下拉列表*/
                shi_index=sheng.selectedIndex;/*獲取市對應的索引*/
                var shi_str="";
                var shi_data=data[shi_index].children/*存放市的數組*/
                for(i=0;i<shi_data.length;i++){
                    shi_str+="<option>"+shi_data[i].name+"</option>"
                }
                shi.innerHTML=shi_str;
            }

 

區:同樣使用onchange事件市發生改變時讓區變化到對應的部分

shi.onchange=function(){
                var qu_index=shi.selectedIndex;/*獲取區對應的索引*/
                var qu_str="";
                var qu_data=data[shi_index].children[qu_index].children;/*存放區的數組*/
                for(i=0;i<qu_data.length;i++){
                    qu_str+="<option>"+qu_data[i].name+"</option>"
                }
                qu.innerHTML=qu_str;
            }
        </script>

 

 


免責聲明!

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



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