目录

一、省市区数据获取

二、遍历省级数据

三、二级联动的实现

四、三级联动的实现


一、省市区数据获取

链接: https://pan.baidu.com/s/1AqXINno57a3og0oVYZCn0g?pwd=6beh 提取码: 6beh

效果展示

二、遍历省级数据

  1.导入数据

  2.在body标签创建三个下拉框

  3.分别获取这三个下拉框

  4.遍历数据

  5.添加到省级下拉框中

代码实现

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><!-- 1.导入数据 --><script src="./area-json.js"></script>
</head>
<body><!-- 2.在body标签创建三个下拉框 --><select name="" id="sheng"><option value="">---请选择---</option></select><select name="" id="shi"><option value="">---请选择---</option></select><select name="" id="qu"><option value="">---请选择---</option></select>
</body>
<script>// 3.分别获取这三个下拉框var sheng = document.getElementById("sheng");var shi = document.getElementById("shi");var qu = document.getElementById("qu");//创建一个文档片段节点frag,用于存储数据var frag = document.createDocumentFragment();// 4.遍历数据for (var i = 0; i < data.length; i++) {//console.log(data[i]);var option = document.createElement("option");option.innerHTML = data[i].name;option.value = data[i].code;//将创建出的option暂时存入frag中frag.appendChild(option);}// 5.添加到省级下拉框中sheng.appendChild(frag);
</script>
</html>

三、二级联动的实现

二级联动在遍历省级基础上又多了些步骤
具体实现步骤如下:
  1.创建一个数组,用于存放市级数据
  2.给省级下拉框绑定事件
  3.遍历数据,将遍历的数据与当前的省作比较,将相对应的市级数据存放到数组中
  4.遍历市级数据
代码实现

 // 1.创建一个数组,用于存放市级数据var shiArr = []// 2.给省级下拉框绑定事件,onchang(当省级数据变化时,触发该事件)sheng.onchange = function () {//清空市级中的数据,防止数据的叠加shi.innerHTML="<option value=\"\">---请选择---</option>"// 3.遍历数据,将遍历的数据与当前的省作比较,将相对应的市级数据存放到数组中for (var i = 0; i < data.length; i++) {if (data[i].code == this.value) {shiArr = data[i].children;break;}}// 4.遍历市级数据for (var j = 0; j < shiArr.length; j++) {var option = document.createElement("option");option.innerHTML = shiArr[j].name;option.value = shiArr[j].code;frag.appendChild(option);}shi.appendChild(frag);}

注意: 在省级数据发生变化时,要清空市级的数据,不然市级的数据会叠加在一起,所以要加上这句:

shi.innerHTML="<option value=\"\">---请选择---</option>"

四、三级联动的实现

三级联动与二级联动的实现几乎一样,注意数据发生变化时所要清空相应的数据即可。
最终代码实现如下:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><!-- 1.导入数据 --><script src="./area-json.js"></script>
</head>
<body><!-- 2.在body标签创建三个下拉框 --><select name="" id="sheng"><option value="">---请选择---</option></select><select name="" id="shi"><option value="">---请选择---</option></select><select name="" id="qu"><option value="">---请选择---</option></select>
</body>
<script>// 3.分别获取这三个下拉框var sheng = document.getElementById("sheng");var shi = document.getElementById("shi");var qu = document.getElementById("qu");var frag = document.createDocumentFragment();// 4.遍历数据for (var i = 0; i < data.length; i++) {console.log(data[i]);var option = document.createElement("option");option.innerHTML = data[i].name;option.value = data[i].code;frag.appendChild(option);}// 5.添加到省级下拉框中sheng.appendChild(frag);// 1.创建一个数组,用于存放市级数据var shiArr = []// 2.给省级下拉框绑定事件,onchang(当省级数据变化时,触发该事件)sheng.onchange = function () {//清空市级与区级中的数据,防止重复shi.innerHTML="<option value=\"\">---请选择---</option>"qu.innerHTML="<option value=\"\">---请选择---</option>"// 3.遍历数据,将遍历的数据与当前的省作比较,将相对应的市级数据存放到数组中for (var i = 0; i < data.length; i++) {if (data[i].code == this.value) {shiArr = data[i].children;break;}}// 4.遍历市级数据for (var j = 0; j < shiArr.length; j++) {var option = document.createElement("option");option.innerHTML = shiArr[j].name;option.value = shiArr[j].code;frag.appendChild(option);}shi.appendChild(frag);}var quArr = []shi.onchange = function () {qu.innerHTML="<option value=\"\">---请选择---</option>"for (var i = 0; i < shiArr.length; i++) {if (shiArr[i].code == this.value) {quArr = shiArr[i].children;break;}}for (var j = 0; j < quArr.length; j++) {var option = document.createElement("option");option.innerHTML = quArr[j].name;option.value = quArr[j].code;frag.appendChild(option);}qu.appendChild(frag);}
</script>
</html>

【经典面试题】如何使用js实现省市区三级联动相关推荐

  1. js实现省市区三级联动(三个下拉框实现)

    js实现省市区三级联动(一个下拉框实现.页面可以多次引用) html代码: 您选择的是: <input type="text" value="" id=& ...

  2. 纯js实现省市区三级联动

    纯js实现省市区三级联动 话不多说,直接上整篇代码 <!DOCTYPE html> <html lang="en"> <head><met ...

  3. 原生js之 省市区三级联动

    <!DOCTYPE html> <html lang="en"><head><meta charset="UTF-8" ...

  4. js实现省市区三级联动

    原文作者:http://www.cnblogs.com/zjfree demo.html 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 2 ...

  5. HTML+JS实现省市区三级联动亲测可用

    在线调试预览地址 https://codepen.io/acelibin/pen/wGooev 1.html代码 html><head></head><body&g ...

  6. JS 的省市区三级联动

    JS省市县级联动 页面上使用的是<select class="form-control" id="cmbProvince" name="cmbP ...

  7. 一款超好的省市区三级联动插件citypicher的使用(数据分从数据库获取或从js文件获取)

    有兴趣的小伙伴,可以继续阅读小编下一篇博客 微服务概述添加链接描述 一篇对SpringCloud的介绍添加链接描述 SpringCloud核心组件详述添加链接描述 一篇对MySQL语句执行顺序的介绍添 ...

  8. 纯JS省市区三级联动

    效果如图所示: HTML Code: [html] view plain copy <html> <head> <script type="text/javas ...

  9. QQ JS省市区三级联动

    如下图: 首先写一个静态的页面: <!DOCTYPE html> <html> <head> <title>QQ JS省市区三级联动</title ...

最新文章

  1. ACM Fellow发文抨击「同行评审」作弊:有「门道」的作者带飞,垃圾论文也能轻松中顶会...
  2. C++中对Mysql的操作函数可以参考以下blog中的内容
  3. JS刷新父窗口的几种方式
  4. unity怎么实现人脸追踪_景区人脸识别解决方案 人脸识别过闸机怎么实现
  5. 音视频技术开发周刊 | 205
  6. linux之安装Clion和运行使用总结
  7. 数据挖掘—K-中心点聚类算法(Java实现)
  8. 机器学习_决策树_ID3算法_C4.5算法_CART算法及各个算法Python实现
  9. spring boot----简单入门
  10. mac Git本地服务器配置
  11. 10、32位 x86处理器编程架构
  12. mysql授权许可_分析MySQL的授权许可
  13. python import模块熟悉方法
  14. jQuery(3)——如何绑定事件
  15. 深入理解操作系统原理之文件系统
  16. 批量模糊匹配的三种方法
  17. uni-app海报(合成图片)demo
  18. NCCL下载及安装教程
  19. 2019届网易云音乐前端实习生电面心得
  20. FMC(FPGA Mezzanine card)连接器

热门文章

  1. linux lvm的操作手册_pvcreate_vgcreate_lvcreate_相关
  2. php 64进制转16进制,PHP进制转换[实现2、8、16、36、64进制至10进制相互转换]
  3. 递归算法解决斐波那契数列
  4. 计算从今天起,100天后是几月几号
  5. 特征选择方法概括—过滤法、嵌入法、包装法
  6. 什么是上拉电阻?什么是下拉电阻?
  7. 第一节:ES是什么?ES6是什么?
  8. 基于创龙TMS320C665x平台GigE工业相机图像采集案例实操笔记
  9. 主席树经典应用区间合并
  10. 厂商如何网红带货?哪里能找到抖音KOL数据?