淘宝的js省市区联动菜单是怎么做的

 我来答
爱车先锋队
2017-11-02 · TA获得超过954个赞
知道小有建树答主
回答量:1057
采纳率:98%
帮助的人:1106万
展开全部

<html>  

  • <head>  

  • <script type="text/javascript" src="jsAddress.js"></script>  

  • </head>  

  • <body>  

  • <select id="cmbProvince" name="cmbProvince"></select>  

  • <select id="cmbCity" name="cmbCity"></select>  

  • <select id="cmbArea" name="cmbArea"></select>  

  • <script type="text/javascript">  

  • addressInit('cmbProvince', 'cmbCity', 'cmbArea');  

  • </script>  

  • </body>  

  • </html>  


  • "jsAddresss.js" File Content:

  • [javascript] view plain copy

  • // 纯JS省市区三级联动  

  • // 2011-11-30 by http://www.cnblogs.com/zjfree  

  • var addressInit = function(_cmbProvince, _cmbCity, _cmbArea, defaultProvince, defaultCity, defaultArea)  

  • {  

  • var cmbProvince = document.getElementById(_cmbProvince);  

  • var cmbCity = document.getElementById(_cmbCity);  

  • var cmbArea = document.getElementById(_cmbArea);  

  • function cmbSelect(cmb, str)  

  • {  

  • for(var i=0; i<cmb.options.length; i++)  

  • {  

  • if(cmb.options[i].value == str)  

  • {  

  • cmb.selectedIndex = i;  

  • return;  

  • }  

  • }  

  • }  

  • function cmbAddOption(cmb, str, obj)  

  • {  

  • var option = document.createElement("OPTION");  

  • cmb.options.add(option);  

  • option.innerText = str;  

  • option.value = str;  

  • option.obj = obj;  

  • }  

  • function changeCity()  

  • {  

  • cmbArea.options.length = 0;  

  • if(cmbCity.selectedIndex == -1)return;  

  • var item = cmbCity.options[cmbCity.selectedIndex].obj;  

  • for(var i=0; i<item.areaList.length; i++)  

  • {  

  • cmbAddOption(cmbArea, item.areaList[i], null);  

  • }  

  • cmbSelect(cmbArea, defaultArea);  

  • }  

  • function changeProvince()  

  • {  

  • cmbCity.options.length = 0;  

  • cmbCity.onchange = null;  

  • if(cmbProvince.selectedIndex == -1)return;  

  • var item = cmbProvince.options[cmbProvince.selectedIndex].obj;  

  • for(var i=0; i<item.cityList.length; i++)  

  • {  

  • cmbAddOption(cmbCity, item.cityList[i].name, item.cityList[i]);  

  • }  

  • cmbSelect(cmbCity, defaultCity);  

  • changeCity();  

  • cmbCity.onchange = changeCity;  

  • }  

  • for(var i=0; i<provinceList.length; i++)  

  • {  

  • cmbAddOption(cmbProvince, provinceList[i].name, provinceList[i]);  

  • }  

  • cmbSelect(cmbProvince, defaultProvince);  

  • changeProvince();  

  • cmbProvince.onchange = changeProvince;  

  • }  

  • var provinceList = [  

  • {name:'北京', cityList:[           

  • {name:'市辖区', areaList:['东城区','西城区','崇文区','宣武区','朝阳区','丰台区','石景山区','海淀区','门头沟区','房山区','通州区','顺义区','昌平区','大兴区','怀柔区','平谷区']},          

  • {name:'县', areaList:['密云县','延庆县']}  

  • ]},  

  • {name:'上海', cityList:[           

  • {name:'市辖区', areaList:['黄浦区','卢湾区','徐汇区','长宁区','静安区','普陀区','闸北区','虹口区','杨浦区','闵行区','宝山区','嘉定区','浦东新区','金山区','松江区','青浦区','南汇区','奉贤区']},           

  • {name:'县', areaList:['崇明县']}  

  • ]},  

  • {name:'天津', cityList:[           

  • {name:'市辖区', areaList:['和平区','河东区','河西区','南开区','河北区','红桥区','塘沽区','汉沽区','大港区','东丽区','西青区','津南区','北辰区','武清区','宝坻区']},          

  • {name:'县', areaList:['宁河县','静海县','蓟 县']}  

  • ]},  

  • {name:'重庆', cityList:[           

  • {name:'市辖区', areaList:['万州区','涪陵区','渝中区','大渡口区','江北区','沙坪坝区','九龙坡区','南岸区','北碚区','万盛区','双桥区','渝北区','巴南区','黔江区','长寿区']},           

  • {name:'县', areaList:['綦江县','潼南县','铜梁县','大足县','荣昌县','璧山县','梁平县','城口县','丰都县','垫江县','武隆县','忠 县','开 县','云阳县','奉节县','巫山县','巫溪县','石柱土家族自治县','秀山土家族苗族自治县','酉阳土家族苗族自治县','彭水苗族土家族自治县']},          

  • ];  

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式