简单的js省市区三级联动代码

当我们需要在前端实现省市区三级联动时,通常采用JavaScript来完成。下面是一份简单的省市区三级联动代码:

<!--HTML部分-->
<select id="province"></select>
<select id="city"></select>
<select id="area"></select>
//JS部分
var province = document.getElementById("province");
var city = document.getElementById("city");
var area = document.getElementById("area");

var provinces = ["省份1", "省份2", "省份3"]; //省份数据
var cities = { //城市数据
    省份1: ["城市1-1", "城市1-2", "城市1-3"],
    省份2: ["城市2-1", "城市2-2", "城市2-3"],
    省份3: ["城市3-1", "城市3-2", "城市3-3"]
};
var areas = { //区县数据
    城市1-1: ["区县1-1-1", "区县1-1-2", "区县1-1-3"],
    城市1-2: ["区县1-2-1", "区县1-2-2", "区县1-2-3"],
    城市1-3: ["区县1-3-1", "区县1-3-2", "区县1-3-3"],
    城市2-1: ["区县2-1-1", "区县2-1-2", "区县2-1-3"],
    城市2-2: ["区县2-2-1", "区县2-2-2", "区县2-2-3"],
    城市2-3: ["区县2-3-1", "区县2-3-2", "区县2-3-3"],
    城市3-1: ["区县3-1-1", "区县3-1-2", "区县3-1-3"],
    城市3-2: ["区县3-2-1", "区县3-2-2", "区县3-2-3"],
    城市3-3: ["区县3-3-1", "区县3-3-2", "区县3-3-3"]
};

//初始化省份
for (var i = 0; i < provinces.length; i++) {
    var option = document.createElement("option");
    option.innerHTML = provinces[i];
    province.appendChild(option);
}

//根据选择的省份更新城市列表
province.onchange = function() {
    city.innerHTML = "";
    area.innerHTML = "";
    var selectedProvince = this.value;
    var citiesOfSelectedProvince = cities[selectedProvince];
    for (var i = 0; i < citiesOfSelectedProvince.length; i++) {
        var option = document.createElement("option");
        option.innerHTML = citiesOfSelectedProvince[i];
        city.appendChild(option);
    }
}

//根据选择的城市更新区县列表
city.onchange = function() {
    area.innerHTML = "";
    var selectedCity = this.value;
    var areasOfSelectedCity = areas[selectedCity];
    for (var i = 0; i < areasOfSelectedCity.length; i++) {
        var option = document.createElement("option");
        option.innerHTML = areasOfSelectedCity[i];
        area.appendChild(option);
    }
}

这份代码通过监听省份、城市选择框的onchange事件,根据当前选择的省份或城市更新下一级对应的城市或区县列表。其中,省份、城市、区县数据可以根据实际需要进行替换。

需要注意的是,这份代码只是一个简单的实现,如果需要更复杂的三级联动,可能需要借助第三方库或者更加完整的数据源。

本文链接:http://task.lmcjl.com/news/13133.html

展开阅读全文