<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Province_three</title>
<style>
*{
margin: 0;
padding: 0;
list-style: none;
font: 400 12px/1.5 Arial,"Lucida Grande",Verdana,"Microsoft YaHei";
}
body{
padding: 50px;
}
select{
margin-right: 5px;
}
</style>
</head> <body> <script>
window.onload = function(){
//
var aProvince = [
"浙江省",
"江苏省",
"广东省"
]
var aCity = [
["杭州市","宁波市","舟山市","温州市","绍兴市"],
["苏州市","南京市"],
["广州市","深圳市"]
]
var aArea = [
[
["滨江区","西湖区","上城区"],
["海曙区","江东区","鄞州区","江北区"],
["定海区"],
["温岭区"],
["柯桥区"]
],
[
["吴中区"],
["鼓楼区"]
],
[
["越秀区","海珠区"],
["宝安区","龙岗区"]
]
]
//fn
function fnAddOption(innerH,target,isClear){
var oOption = document.createElement("option");
oOption.value = innerH;
oOption.innerHTML = innerH;
//clearOptions
if(isClear){
var tLength = target.children.length;
for(var i=0; i<tLength; i++){
target.removeChild(target.children[0]);
}
}
target.appendChild(oOption);
} function fnGetProvince(ele,initP,initC,initA){
ele.innerHTML = '<select><option>--选择省--</option></select><select><option>--选择市--</option></select><select><option>--选择区--</option></select>';
var oSelect1 = ele.getElementsByTagName("select")[0];
var oSelect2 = ele.getElementsByTagName("select")[1];
var oSelect3 = ele.getElementsByTagName("select")[2];
for(var i=0; i<aProvince.length; i++){
fnAddOption(aProvince[i],oSelect1);
//initP
if(typeof(initP)!="undefined" && initP == aProvince[i]){
oSelect1.getElementsByTagName("option")[i+1].setAttribute("selected",true);
onchangeS1();
//initC
if(typeof(initC)!="undefined"){
var oOptions = oSelect2.getElementsByTagName("option");
for(var j=0; j<oOptions.length; j++){
if(initC == oOptions[j].innerHTML){
oOptions[j].setAttribute("selected",true);
onchangeS2();
//initA
if(typeof(initA)!="undefined"){
var oOptions = oSelect3.getElementsByTagName("option");
for(var k=0; k<oOptions.length; k++){
if(initA == oOptions[k].innerHTML){
oOptions[k].setAttribute("selected",true);
}
}
}
}
}
}
}
//init end
} //select1 onchange event
function onchangeS1(){
var sIndex = oSelect1.selectedIndex; fnAddOption("--选择市--",oSelect2,true);
fnAddOption("--选择区--",oSelect3,true);
if(sIndex==0){
return;
}
for(var i=0; i<aCity[sIndex-1].length; i++){
fnAddOption(aCity[sIndex-1][i],oSelect2);
}
}
oSelect1.onchange = onchangeS1; //select2 onchange event
function onchangeS2(){
var sIndex = oSelect1.selectedIndex;
var sCityIndex = oSelect2.selectedIndex; fnAddOption("--选择区--",oSelect3,true);
if(sCityIndex==0){
return;
}
for(var i=0; i<aArea[sIndex-1][sCityIndex-1].length; i++){
fnAddOption(aArea[sIndex-1][sCityIndex-1][i],oSelect3);
}
}
oSelect2.onchange = onchangeS2; } //get fn
var oDiv = document.getElementById("div1");
fnGetProvince(oDiv,"广东省","深圳市","龙岗区");
}
</script> <div id="div1"></div> </body>
</html>

下面是二级省市选择:

<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Province_Two</title>
<style>
*{
margin: 0;
padding: 0;
list-style: none;
font: 400 12px/1.5 Arial,"Lucida Grande",Verdana,"Microsoft YaHei";
}
body{
padding: 50px;
}
select{
margin-right: 5px;
}
</style>
</head> <body> <script>
window.onload = function(){
//
var aProvince = [
"浙江省",
"江苏省",
"广东省"
]
var aCity = [
["杭州市","宁波市","舟山市","温州市","绍兴市"],
["苏州市","南京市"],
["广州市","深圳市"]
] //fn
function fnAddOption(innerH,target){
var oOption = document.createElement("option");
oOption.value = innerH;
oOption.innerHTML = innerH;
target.appendChild(oOption);
} function fnGetProvince(ele){
ele.innerHTML = '<select><option>--请选择--</option></select><select><option>--请选择--</option></select>';
var oSelect1 = ele.getElementsByTagName("select")[0];
var oSelect2 = ele.getElementsByTagName("select")[1];
for(var i=0; i<aProvince.length; i++){
fnAddOption(aProvince[i],oSelect1);
} //select onchange event
oSelect1.onchange = function(){
var sIndex = oSelect1.selectedIndex;
var sOption = oSelect1[sIndex]; oSelect2.innerHTML="";
if(sIndex==0){
fnAddOption("--请选择--",oSelect2);
return;
}
for(var i=0; i<aCity[sIndex-1].length; i++){
fnAddOption(aCity[sIndex-1][i],oSelect2);
}
}
} //get fn
var oDiv = document.getElementById("div1");
fnGetProvince(oDiv);
}
</script> <div id="div1"></div> </body>
</html>

js三级省市区选择的更多相关文章

  1. 省市区js三级联动(原创)

    看了一些网上的js三级联动,但感觉不是缺这,就是少那,决定亲自操刀写了一个,现记录如下,以备后用! <!DOCTYPE html> <html> <head> &l ...

  2. vue仿京东省市区三级联动选择组件

    工作中需要一个盒京东购物车地址选择相似的一个省市区三级联动选择组件,google查了下都是下拉框形式的,于是自己写了一个,希望对使用vue开发项目的朋友有帮助,显示效果如下:使用vue2.0开发 ht ...

  3. jquery 三级关联选择效果

    在网页制作中,三级关联选择经常遇到,于是归纳了一个进行参考 代码如下: <!DOCTYPE html> <html lang="en"> <head& ...

  4. asp.net mvc中使用jquery H5省市县三级地区选择控件

    地区选择是项目开发中常用的操作,本文讲的控件是在手机端使用的选择控件,不仅可以用于实现地区选择,只要是3个级别的选择都可以实现,比如专业选择.行业选择.职位选择等.效果如下图所示: 附:本实例asp. ...

  5. [js开源组件开发]js手机联动选择地区仿ios 开源git

    js手机联动选择地区 前言:由于网上找到了一个mobiscrool,比较全,但是不开源,只能试用15天,正式版竟然要三千块钱,穷人只能自己动手,写了个只针对弹窗地区选择的. 本站点所有的资源均在git ...

  6. [js开源组件开发]js手机联动选择日期 开源git

    js手机联动选择日期 这里在前面的<js手机联动选择地区>的基础上,改造数据源之后形成的一个日期的选择器,当然你可以使用之前的PC上模式的<日期控件>,它同时也支持手机端,ht ...

  7. js控制日期选择框datetime-local和select的展开

    注: js控制元素展开不受元素css属性的限制,例如opacity,z-index等 1. 使用js控制日期选择框的展开 ios: document.querySelector(".targ ...

  8. JS实现日期选择

    简单的JS实现日期选择,对于PHP来说就像是遍历一样,不过我个人觉得JS这个很有趣,随便记录一下 开始: <select name="gh_date"><opti ...

  9. Python 练习:三级菜单选择城市(二)

    优化了上一个三级菜单选择城:http://www.cnblogs.com/klvchen/p/8646466.html info = { 'GuangDong':{ 'GuangZhou': ['Ti ...

随机推荐

  1. osgconv 批量转换

    @echo offfor /f "delims=" %%i in ('dir/b *.osg') do ( "osgconv.exe" "%%~ni. ...

  2. moogodb3.x总结

    搞了三天了,从阿里云服务器,到linux,再到mongodb数据库,只有一个感觉就是,头都要炸了,这篇是对mongodb做一个总结吧,也算有一个成果了 mongodb在linux下的安装 mongod ...

  3. C --gettimeofday===获取某个程序经历的时间

    #include <stdio.h> #include <sys/time.h> #include <time.h> int gettimeofday(struct ...

  4. Git 操作的一些场景

    1. 某些不需要的文件/文件夹,如:/build 之类,在添加对应的gitignore之前Push了,导致每次编译都会产生新的文件 解决方法:直接删掉不需要的文件/文件夹,然后push gitigno ...

  5. Orleans是什么 (一)

    官网:http://dotnet.github.io/orleans/ 文档:http://dotnet.github.io/orleans/What's-new-in-Orleans 源码:http ...

  6. 384. Shuffle an Array

    Shuffle a set of numbers without duplicates. Example: // Init an array with set 1, 2, and 3. int[] n ...

  7. "稀奇古怪的"delete this

    myClass::foo(){     delete this; } .. void func(){     myClass *a = new myClass();     a->foo(); ...

  8. Faster-rnnlm代码分析1 - 词表构建,Nnet成员

    https://github.com/yandex/faster-rnnlm     Gdb ./rnnlm r -rnnlm model-good.faster -train thread.titl ...

  9. Delphi面向对象---接口

    从Delphi3开始支持接口.接口定义了能够与一个对象进行交互操作的一组过程和函数.对一个接口进行定义包含两个方面的内容: 1)一方面是实现这个接口 2)另一方面是定义接口的客户 一个类能够实现多个接 ...

  10. 攻城狮在路上(壹) Hibernate(二)--- 第一个hibernate程序

    1.直接通过JDBC API持久化实体域对象: A.java.sql常用接口和类: DriverManager:驱动程序管理器,负责创建数据库连接. Connection:代表数据库连接. State ...