JavaScript实现简单省市联动

作者:异步漫步

时间:2026-10-25

浏览:153

本文介绍如何使用JavaScript实现简单的省市联动效果。通过创建包含国家与城市数据的二维数组,利用onchange事件监听下拉框选择变化,动态生成并更新城市选项。代码包含HTML结构、数组定义及DOM操作逻辑,适合初学者参考学习。

文章目录

本文分享了一个使用JavaScript实现的简单省市联动示例代码,供读者参考。

实现步骤

首先创建一个包含两个下拉选择框的页面。为第一个下拉框绑定onchange事件,当选项改变时,调用add1方法并传入当前选中option的value值。接着,创建一个二维数组来存储数据,其中每个数组的第一个元素代表国家名称,后续元素为该国家下的城市列表。

具体实现逻辑如下:

首先遍历二维数组,找到与传递过来的value值相匹配的国家数组。

将找到的数组中的第一个元素(国家名)与传递过来的值进行比对。

如果两者相同,则获取该数组中第一个元素之后的所有元素,即对应的城市列表。

获取用于显示城市的select元素。

使用appendChild方法将新创建的option元素添加到城市select中。创建option元素需要三个步骤:创建option对象、添加文本节点、将其追加到select中。

由于每次选择国家时都需要向city下拉框中添加option,如果不处理,第二次及后续的选择会不断追加选项,导致列表重复。

因此,在每次添加新选项之前,需要判断city下拉框中是否已存在option。如果存在,应先将其删除,再添加新的选项。

具体代码实现如下:


<html >
 <head>
   
  <title>省市联动</title>
  <style type = "text/css">
  </style>
 </head>
 <body>
   <select id="countyid" onchange="add1(this.value)">
  <option value="0">--请选择--</option>
  <option value="中国">中国</option>
  <option value="美国">美国</option>
  <option value="英国">英国</option>
  <option value="日本">日本</option>
 
   </select>
 
    <select id="cityid" >
 
   </select>
 </body>
 <script type="text/javascript">
 var arr = new Array(4);
 arr[0]=["中国","北京","上海","深圳","杭州"];
 arr[1]=["美国","华盛顿","纽约","底特律","芝加哥"];
 arr[2]=["英国","伦敦","伯明翰","利兹","利物浦"];
 arr[3]=["日本","东京","大阪","北海道","长崎"];
 /*
  步骤:
  1.遍历二维数组
  2.得到一个数组-国家对应关系
  3.用数组中第一个值与传递过来的值作比较
  4.如果相同,获取到第一个值后面的元素
  5.得到city的select
  6.添加过去-appendChild方法
   -创建option(三步)
   
  由于每次都要向city里面添加option
  第二次添加,会追加。
  * 每次添加之前,判断一下city里面是否有option,如果有,删除
 */
 
 function add1(val){
  //得到city里面的select
   var city1 = document.getElementById("cityid");
   var ops = city1.getElementsByTagName("option");
   for(var m=0;m<ops.length;m++){
    var op = ops[m];
    city1.removeChild(op);
    m--;
   }
  for(var i=0;i<arr.length;i++){
   arr1=arr[i];
   var firstValue = arr1[0];
   if (firstValue == val)
   {
    
    //创建option
    for(var j=1;j<arr1.length;j++){
     var value1 = arr1[j];
     var option1=document.createElement("option");
     var text1 = document.createTextNode(value1);
     option1.appendChild(text1);
     city1.appendChild(option1);
    }
   }
   
  }
 }
 
   </script>
 
</html>

运行效果演示:

实现步骤

以上就是本文的全部内容,希望对读者有所帮助。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章