html:html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>省市区联动</title>
</head>
<body>
<select id="province"></select>
<br>
<select id="city"></select>
<br>
<select id="area"></select>
<script src="./js/省市区联动.js"></script>
</body>
</html>
js部分:
(function() { var data = [ { name: '四川省', city: [ { name: '成都市', area: ['成都市1区', '成都2区', '成都3区'], }, { name: '都江堰市', area: ['都江堰市1区', '都江堰市2区', '都江堰市3区'], }, { name: '绵阳市', area: ['绵阳市1区', '绵阳市2区', '绵阳市3区'], }, ], }, { name: '广东省', city: [ { name: '广州市', area: ['广州市1区', '广州市2区', '广州市3区'], }, { name: '深圳市', area: ['深圳市1区', '深圳市2区', '深圳市3区'], }, ], }, { name: '河南省', city: [ { name: '洛阳市', area: ['洛阳市1区', '洛阳市2区', '洛阳市3区'], }, { name: '开封市', area: ['开封市1区', '开封市2区', '开封市3区'], }, { name: '郑州市', area: ['郑州市1区', '郑州市2区', '郑州市3区'], }, ], }, ]; var provinceSelectObj = document.getElementById('province'); var citySelectObj = document.getElementById('city'); var areaSelectObj = document.getElementById('area'); // 拼字符串 // var htmlText = ''; // // 遍历数组 // for(var i = 0; i < data.length; ++i) { // htmlText = htmlText + '<option>' + data[i].name + '</option>'; // } // // console.log(htmlText); // provinceSelectObj.innerHTML = htmlText; for(var i = 0; i < data.length; ++i) { var newOption = document.createElement('option'); newOption.innerHTML = data[i].name; provinceSelectObj.appendChild(newOption); } provinceSelectObj.onchange = function() { renderCity(provinceSelectObj.selectedIndex); renderArea(provinceSelectObj.selectedIndex, 0); }; citySelectObj.onchange = function() { renderArea(provinceSelectObj.selectedIndex, citySelectObj.selectedIndex); }; renderCity(0); renderArea(0, 0); function renderCity(provinceIndex) { // 每次显示新城市以前,先清空以前的城市 citySelectObj.innerHTML = ''; var arr = data[provinceIndex].city; for(var i = 0; i < arr.length; ++i) { var newOption = document.createElement('option'); newOption.innerHTML = arr[i].name; citySelectObj.appendChild(newOption); } } function renderArea(provinceIndex, cityIndex) { // 显示新的区以前,先把以前显示的区清空 areaSelectObj.innerHTML = ''; var arr = data[provinceIndex].city[cityIndex].area; for(var i = 0; i < arr.length; ++i) { var newOption = document.createElement('option'); newOption.innerHTML = arr[i]; areaSelectObj.appendChild(newOption); } }})();