純js實現省市區三級聯動

純js實現省市區三級聯動

話不多說,直接上整篇代碼

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8" />
    <title>demo</title>
    <script type="text/javascript" src="./region.js"></script>
</head>
<body>
    省:<select name="province" id="province"></select>
    市:<select name="city" id="city"></select>
    區:<select name="county" id="county"></select>
    <script type="text/javascript">
        var data = obj.regions;
        var province=document.getElementById('province');
        var city=document.getElementById('city');
        var county=document.getElementById('county');
        var option = "<option value='請選擇'>請選擇</option>";
        province.innerHTML = option;
        city.innerHTML = option;
        county.innerHTML = option;

        // 生成省列表
        for(var i=0;i<data.length;i++){
            var option_province=document.createElement('option');
            option_province.value=data[i].name;
            option_province.innerText=data[i].name;
            province.appendChild(option_province);
        }
        // 根據選擇的省生成相應的城市列表
        province.onchange=function(e){
            for(var i=0;i<data.length;i++){
                if(data[i].name == e.target.value){
                    var data_city=data[i].regions;
                    var option_city=data_city.map(function(item){
                        return `<option value="${item.name}">${item.name}</option>`
                    }).join('');
                    // 根據選擇的城市生成相應的縣級列表
                    city.onchange=function(evt){
                        for(var j=0;j<data_city.length;j++){
                            if(data_city[j].name == evt.target.value){
                                var data_county=data_city[j].regions;
                                var option_count=data_county.map(function(items){
                                    return `<option value="${items.name}">${items.name}</option>`
                                }).join('');
                            }
                        }
                        county.innerHTML="<option value='請選擇'>請選擇</option>"+option_count;
                    }
                }
            }
            city.innerHTML="<option value='請選擇'>請選擇</option>"+option_city;
            county.innerHTML="<option value='請選擇'>請選擇</option>"
        }
    </script>
</body>
</html>

效果如下:
在這裏插入圖片描述
說明:上面代碼引入的<script type="text/javascript" src="./region.js"></script>是包含省市區數據的文件,文件部分內容如下,如需全篇內容,可點擊此處查看整篇內容:

var obj = {
“regions”: [{
“id”: 110000,
“name”: “北京”,
“regions”: [{
“id”: 110100,
“name”: “北京市”,
“regions”: [{
“id”: 110101,
“name”: “東城區”
}, {
“id”: 110102,
“name”: “西城區”
}, {
“id”: 110103,
“name”: “崇文區”
}, {
“id”: 110104,
“name”: “宣武區”
}, {
“id”: 110105,
“name”: “朝陽區”
}, {
“id”: 110106,
“name”: “豐臺區”
}, {
“id”: 110107,
“name”: “石景山區”
}, {
“id”: 110108,
“name”: “海淀區”
}, {
“id”: 110109,
“name”: “門頭溝區”
}, {
“id”: 110111,
“name”: “房山區”
}, {
“id”: 110112,
“name”: “通州區”
}, {
“id”: 110113,
“name”: “順義區”
}, {
“id”: 110114,
“name”: “昌平區”
}, {
“id”: 110115,
“name”: “大興區”
}, {
“id”: 110116,
“name”: “懷柔區”
}, {
“id”: 110117,
“name”: “平谷區”
}, {
“id”: 110228,
“name”: “密雲縣”
}, {
“id”: 110229,
“name”: “延慶縣”
}]
}],
“pinyin”: “BeiJing”,
“hot”: true,
“municipality”: true
}, {
“id”: 120000,
“name”: “天津”,
“regions”: [{
“id”: 120100,
“name”: “天津市”,
“regions”: [{
“id”: 120101,
“name”: “和平區”
}, {
“id”: 120102,
“name”: “河東區”
}, {
“id”: 120103,
“name”: “河西區”
}, {
“id”: 120104,
“name”: “南開區”
}, {
“id”: 120105,
“name”: “河北區”
}, {
“id”: 120106,
“name”: “紅橋區”
}, {
“id”: 120107,
“name”: “塘沽區”
}, {
“id”: 120108,
“name”: “漢沽區”
}, {
“id”: 120109,
“name”: “大港區”
}, {
“id”: 120110,
“name”: “東麗區”
}, {
“id”: 120111,
“name”: “西青區”
}, {
“id”: 120112,
“name”: “津南區”
}, {
“id”: 120113,
“name”: “北辰區”
}, {
“id”: 120114,
“name”: “武清區”
}, {
“id”: 120115,
“name”: “寶坻區”
}, {
“id”: 120221,
“name”: “寧河縣”
}, {
“id”: 120223,
“name”: “靜海縣”
}, {
“id”: 120225,
“name”: “薊縣”
}]
}],
“pinyin”: “TianJin”,
“hot”: true,
“municipality”: true
}]

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章