js中的省市区三级联动

  

  想要实现省市区的三级联动,首先需要的是一个下拉框,这个下拉框用我们的<select>标签就能实现,具体如下:

<select id="province" onchange="chooseProvince(this)">

<option value="1">请选择省</option>

</select>
<select id="city" onchange="choosecity(this)">
<option value="1">请选择市</option>
</select>
<select id="area">
<option value="1">请选择区</option>
</select>

  此处的onchange是一个触发事件,用来连接js脚本语言实现的内容。最基础的下拉框出来之后,需要准备的便是一个全国省市区的数据。这种数据网络上一般都有具体存在形式类似如下

var data=[{name:‘北京‘,cityList:[‘‘,‘‘,‘‘...‘‘]},{name:‘湖北‘,cityList:[{name:‘武汉‘,areaList:[‘‘,‘‘,‘‘,...‘‘]},{},{},{}...{}]},{},{}...{}];

  下拉框中的数据,使用输入法输入是个不理智的想法,所以此处体现了循环遍历的重要性,循环的长度是所有数据集合的长度,将遍历出来的所有省,直辖市,行政区放入到一个集合中。单独获取data中第一组name的方法是 data.name即可。在遍历的过程中增加新的省份便实现了第一个下拉框的数据。

  这里得到的省集合是为了与市联动而准备的,也就是第二个下拉框的内容。第二个下拉框的内容受到第一个的选择的影响,首先要判断出第一个选择的是哪个省,这里用

var index = th.selectedIndex-1;
var provinceName = provinceArray[index];

获取市的name首先要确定其所在的cityList,而获取cityList则需要其对应的省(第一个下拉框的选择,即上面的provinceName),正因为如此,遍历省的集合,当provinceName相等于其中一个时,以此作为判断条件,获取此时的cityList,cityName集合中的name便是所需要的市,具体方法类似于获取省的方法,继而获得了city的name。在这里需要注意的是,当选择省的时候,之前的市的内容必须清空,否则增加所需要的对应的市的时候会在原有的基础上进行。这里清空的方法有很多,我喜欢使用的是在遍历添加市之前,增加一个对象.innerHTML="";

第三个下拉框内容的增加方法等同于第二个,需要它的前一级信息的集合,即市的集合。判断出选择的市,方法同上,然后以,遍历过程中市的内容相等于选择的市内容相等作为条件,得到areaList,区的集合,这里增加区的时候同样需要把之前的增加内容清空。

区的单纯增加的详细代码如下,前提是准确获取对应的区的集合:

for(var a=0;a<areaList.length;a++){
var area = areaList[a];
areaTag.add(new Option(area,a));

  总结:总的来说,每一个下拉框内容的添加都是建立在获取对应集合的基础之上。获取集合的条件即如上所述,其中需要注意局部变量与全局变量的使用范围。

js主要内容如下

function chooseProvince(th){
var index = th.selectedIndex-1;
var provinceName = provinceArray[index];
for(var n=0; n<provinceList.length; n++){
var provice = provinceList[n];
console.log(provice.name == provinceName);
if (provice.name == provinceName){
cityList = provice.cityList;
cityTag.innerHTML="";
console.log(cityList);
for(var c=0; c<cityList.length; c++){
var city = cityList[c];
var cityName = city.name;
cityArray[c]=cityName;
cityTag.add(new Option(cityName,c));
   }
  }
 }
}
function choosecity(tr){
var index = tr.selectedIndex;
var cityName = cityArray[index];
for(var m=0;m<cityList.length;m++){
var city1=cityList[m];
if(cityName == city1.name){
var areaList= city1.areaList
areaTag.innerHTML="";
for(var a=0;a<areaList.length;a++){
var area = areaList[a];
areaTag.add(new Option(area,a));
      }
    }
  }
}

以上纯属个人观点,如有问题请多多指出,谢谢。

时间: 2024-08-10 15:01:44

js中的省市区三级联动的相关文章

关于在smarty中实现省市区三级联动

刚开始接触php,,其实对于一些比较深入的东西还不是很了解,就像是这次的省市区联动,都是用三张表为基础编码的,原谅我的无知,谢谢. 接下来就是编码部分了: <?php require('./smarty/Smarty.class.php'); date_default_timezone_set("PRC"); $conn = mysql_connect("localhost","root","123456"); mysq

纯JS 详细的省市区三级联动

省:<select id="cmbProvince"></select> 市:<select id="cmbCity"></select> 区:<select id="cmbArea"></select> <script type="text/javascript"> addressInit('cmbProvince', 'cmbCity',

thinkphp中实现省市区三级联动菜单

数据库文件:http://pan.baidu.com/s/1dDEkTLB 1, <script language="javascript" type="text/javascript" src="jquery.js"></script> 2, <script>function setChild(parent_node, parent_id) {  if('city_id' == parent_node) {

JS省市区三级联动

不需要访问后台服务器端,不使用Ajax,无刷新,纯JS实现的省市区三级联动. 当省市区数据变动是只需调正js即可. 使用方法: <!DOCTYPE html><html><head><title>纯JS省市区联动</title><script type="text/javascript" src="jsAddress.js"></script></head><bod

从QQ网站中提取的纯JS省市区三级联动

http://www.cnblogs.com/zjfree/p/3269864.html 今天收到园友信息,想问我要原来写的一个 < 纯JS省市区三级联动 >文章中最新的省市区数据. 那个是老早以前搞的.记得数据是从数据库中提取生成的.一时也找不到当时的数据库了. 我发现在 http://ip.qq.com/ 的网站中有QQ自己的JS省市区三级联动.所以研究了一下.他的界面如下: 何不直接使用的数据呢? 惊喜的是QQ是使用引用外部JS来实现三级联动的.JS如下:http://ip.qq.com

QQ JS省市区三级联动

如下图: 首先写一个静态的页面: <!DOCTYPE html> <html> <head> <title>QQ JS省市区三级联动</title> <!-- 使用QQ的省市区数据 --> <!-- <script type="text/javascript" src="http://ip.qq.com/js/geo.js"></script> --> <

JS 省市区三级联动

JS 省市区三级联动: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv=&q

【修改】纯JS省市区三级联动 支持js默认省市区

---恢复内容开始--- <!DOCTYPE html><html><head><title>修改,QQ JS省市区三级联动 -支持默认省市区</title><!-- 使用QQ的省市区数据 --><!--<script type="text/javascript" src="http://ip.qq.com/js/geo.js"></script>--><

省市区三级联动 js 腾讯的 直接用就行的

js地址:http://ip.qq.com/js/geo.js 使用示例: <!DOCTYPE html><html><head><title>QQ JS省市区三级联动</title><!-- 直接使用QQ的省市区数据 --><!--<script type="text/javascript" src="http://ip.qq.com/js/geo.js"></scri