【经典面试题】如何使用js实现省市区三级联动
目录
一、省市区数据获取
二、遍历省级数据
三、二级联动的实现
四、三级联动的实现
一、省市区数据获取
链接: 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实现省市区三级联动相关推荐
- js实现省市区三级联动(三个下拉框实现)
js实现省市区三级联动(一个下拉框实现.页面可以多次引用) html代码: 您选择的是: <input type="text" value="" id=& ...
- 纯js实现省市区三级联动
纯js实现省市区三级联动 话不多说,直接上整篇代码 <!DOCTYPE html> <html lang="en"> <head><met ...
- 原生js之 省市区三级联动
<!DOCTYPE html> <html lang="en"><head><meta charset="UTF-8" ...
- 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 ...
- HTML+JS实现省市区三级联动亲测可用
在线调试预览地址 https://codepen.io/acelibin/pen/wGooev 1.html代码 html><head></head><body&g ...
- JS 的省市区三级联动
JS省市县级联动 页面上使用的是<select class="form-control" id="cmbProvince" name="cmbP ...
- 一款超好的省市区三级联动插件citypicher的使用(数据分从数据库获取或从js文件获取)
有兴趣的小伙伴,可以继续阅读小编下一篇博客 微服务概述添加链接描述 一篇对SpringCloud的介绍添加链接描述 SpringCloud核心组件详述添加链接描述 一篇对MySQL语句执行顺序的介绍添 ...
- 纯JS省市区三级联动
效果如图所示: HTML Code: [html] view plain copy <html> <head> <script type="text/javas ...
- QQ JS省市区三级联动
如下图: 首先写一个静态的页面: <!DOCTYPE html> <html> <head> <title>QQ JS省市区三级联动</title ...
最新文章
- ACM Fellow发文抨击「同行评审」作弊:有「门道」的作者带飞,垃圾论文也能轻松中顶会...
- C++中对Mysql的操作函数可以参考以下blog中的内容
- JS刷新父窗口的几种方式
- unity怎么实现人脸追踪_景区人脸识别解决方案 人脸识别过闸机怎么实现
- 音视频技术开发周刊 | 205
- linux之安装Clion和运行使用总结
- 数据挖掘—K-中心点聚类算法(Java实现)
- 机器学习_决策树_ID3算法_C4.5算法_CART算法及各个算法Python实现
- spring boot----简单入门
- mac Git本地服务器配置
- 10、32位 x86处理器编程架构
- mysql授权许可_分析MySQL的授权许可
- python import模块熟悉方法
- jQuery(3)——如何绑定事件
- 深入理解操作系统原理之文件系统
- 批量模糊匹配的三种方法
- uni-app海报(合成图片)demo
- NCCL下载及安装教程
- 2019届网易云音乐前端实习生电面心得
- FMC(FPGA Mezzanine card)连接器