js省市区三级联动

js省市区三级联动

js省市区三级联动

最近用到了之前的上课笔记,在这里存个小档

//js省市区三级联动

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<title>级联列表</title>
	<style type="text/css"></style>
</head>
<body>

 <script type="text/javascript" src="city.json"></script>
<div>
 <select id="shen">
 	<option value="01"> 请选择你的省份 </option>
 </select>
 
  <select id="shi">
 	<option value="02"> 请选择你的市 </option>
 </select>
  <select id="qu">
 	<option value="03"> 请选择你的区 </option>
 </select>
 </div>
 <div>
 	<button>确定!</button>
 </div>

<script type="text/javascript">
 	let mydata = JSON.parse(data);

 	function getName(ele){
 		return ele.name;
 	}

    var shenArray = mydata.map(getName);

    function addArea(target,arr){
    	arr.forEach(function(value){
    	var op = document.createElement("option");
    	op.innerText = value;
    	target.appendChild(op);
    	})
    }

 

 	function getCitys(shenName){
 		for(let i=0;i<mydata.length;i++){
 			if(shenName===mydata[i].name){
 				return mydata[i].city.map(getName);
 			}
 		}
 	}
    


    function getqus(shiName){
        for(let i=0;i<mydata.length;i++){
            for(let j=0;j<mydata[i].city.length;j++){
                if(shiName===mydata[i].city[j].name){
                    return mydata[i].city[j].area;
                }
            }
        }
    }

 	

    
    addArea(document.getElementById("shen"),shenArray);

 	function shenChangeHandler(event){
 		
 		var shiArray = getCitys(this.value);
 		document.getElementById("shi").options.length=1;
 		console.log(this.value);
 		addArea(document.getElementById("shi"),shiArray);
 	}
 	
 	document.getElementById("shen").addEventListener("change",shenChangeHandler);


    



   

    function shiChangeHandler(event){
        
        var quArray = getqus(this.value);
        document.getElementById("qu").options.length=1;
        console.log(this.value);
        addArea(document.getElementById("qu"),quArray);
    }
    
    document.getElementById("shi").addEventListener("change",shiChangeHandler);




 	
 </script>

</body>
</html>

效果图

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值