原生JS实现省市县三级联动

利用原生JS实现省市区三级联动(详解) JavaScript实现省市区三级联动1.遍历数据2.二级联动的实现3.三级联动的实现 1.遍历数据 数据链接 提取码: bv3t 2.二级联动的实现 3.三级联动的实现 阅读详情

介绍

做页面开发或客户端程序开发,都会碰到几个下拉菜单联动的情况,例如在网上买东西的时候,就会选择收货地址,以及在填写家庭信息的时候,都会用到常见的省,市,区三级联动。

思路

页面加载的时候显示的是默认的初始省市县,通过选择不同的省和市,则该省对应的市和县显示为默认。
当点击省份列表中的某一项,此时触发省份下拉框的onchange事件,在onchange事件中根据前面所选的省份来显示对应城市。这里用到一个select的selectedIndex属性,从而获取刚刚点击的是哪个省份。
当点击城市列表中的某一项时,原理同上(此处不赘述)

实现

页面初始化效果

首先创建3个下拉列表框,分别设置Id为prov、city和area,以便在后期可以获取对应的DOM节点,不添加任何option节点,后面通过js实现节点的添加。
初始页面效果:
(https://img-blog.csdnimg.cn/20190822134631849.png)
代码如下:

 <style>
        select{
            width:200px;
            height: 30px;
        }
    </style>
<body>
    <select id="prov"></select>
    <select id="city"></select>
    <select id="area"></select>
</body>

编写JS文件

area.js

创建一个object对象,以JSON的形式存储省市县信息,通过js创建节点将该信息添加到对应的下拉列表中显示。
代码如下:

var obj={
    "安徽省":[{
        "合肥市":[{
            "瑶海区":"1","庐阳区":"2","蜀山区":"3","包河区":"4","肥东县":"5","肥西县":"6","长丰县":"7", "庐江县":"8"
        }],
        "芜湖市":[{
            "镜湖区":"1","弋江区":"2","鸠江区":"3","三山区":"4","无为县":"5","芜湖县":"6","繁昌县":"7","南陵县":"8"
        }]
    }],

    "江苏省":[{
        "南京市":[{
            "玄武区":"1","秦淮区":"1","鼓楼区":"1","建邺区":"1","栖霞区":"1","雨花台区":"1","江宁区":"1","浦口区":"1","六合区":"1","溧水区":"1",
            "高淳区":"1"
        }],
        "无锡市":[{
            "滨湖区":"1","梁溪区":"1","新吴区":"1","锡山区":"1","惠山区":"1","江阴市":"1","宜兴市":"1"
        }],
        "徐州市":[{
            "云龙区":"1","贾汪区":"1","泉山区":"1","铜山区":"1","丰县":"1","沛县":"1","睢宁县":"1","邳州市":"1","新沂市":"1"
        }]
    }],

    "四川省":[{
        "成都市":[{
            "锦江区":"1","青羊区":"1","金牛区":"1","武侯区":"1","成华区":"1","青白江区":"1","龙泉驿区":"1","新都区":"1","温江区":"1","简阳市":"1",
            "崇州市":"1"
        }],
        "绵阳市":[{
            "涪城区":"1","游仙区":"1","安州区":"1","江油市":"1","梓潼县":"1","三台县":"1","盐亭县":"1"
        }],
        "攀枝花市":[{
            "东区":"1","西区":"1","仁和区":"1","米易县":"1","盐边县":"1"
        }]
    }],

    "河南省":[{
        "郑州市":[{
            "中原区":"1","二七区":"2","金水区":"3","惠济区":"4","管城区":"5","上街区":"6","巩义市":"7", "新郑市":"8"
        }],
        "开封市":[{
            "龙亭区":"1","鼓楼区":"2","禹王台区":"3","顺河区":"4","祥符区":"5","兰考县":"6","通许县":"7","尉氏县":"8"
        }]
    }]
};

main.js

用于实现省市县三级联动的效果
代码如下:

window.onload=function(){
    var prov=document.getElementById("prov");
    var city=document.getElementById("city");
    var area=document.getElementById("area");


    //这是一种增强的for循环,是一种不使用下标的遍历方式,可以用作json的遍历
    for(var x in obj){
        var node=document.createElement("option");
        node.innerHTML=x;
        prov.appendChild(node);
    }

    //设置默认的省市为"安徽省"
    var prov_con="安徽省";
    for(var x in obj[prov_con][0]){
        var node=document.createElement("option");
        //console.log(node);
        node.innerHTML=x;
        city.appendChild(node);
    }
    //设置安徽省的市默认为"合肥市"
    var city_con="合肥市";
    for(var x in obj[prov_con][0][city_con][0]){
        var node=document.createElement("option");
        //console.log(node);
        node.innerHTML=x;
        area.appendChild(node);
    }

    //城市改变,让县也发生改变
    city.onchange= function () {
        //检测当前选择的市
        var city_sel=city[this.selectedIndex].innerHTML;
        //console.log(city_sel);
         area.innerHTML="";
        var area_sel=obj[prov_con][0][city_sel][0];
        for(var x in area_sel){
            var node=document.createElement("option");
            //console.log(node);
            node.innerHTML=x;
            //console.log(node);
            area.appendChild(node);
        }
    };

    //改变省,让市也发生改变
    prov.onchange= function () {
        //console.log(prov_sel);
        //检测当前选择的省
        var prov_sel=prov[this.selectedIndex].innerHTML;
        //console.log(prov_sel);
        //每次在选择省的时候,将原先的市和县清空,重新添加新的对应的省和市的节点
        city.innerHTML="";
        area.innerHTML="";
        //将当前选择的省作为默认值
        prov_con=prov_sel;
        //遍历该省下面的JSON对象,创建option节点
        for(var x in obj[prov_con][0]){
            var node=document.createElement("option");
            node.innerHTML=x;
            console.log(node);
            //向市下拉列表框中添加节点
            city.appendChild(node);
        }
        //将当前选中的市作为默认值,遍历该市下面的县对象
        city_con=city[city.selectedIndex].innerHTML;
        for(var x in obj[prov_con][0][city_con][0]){
            var node=document.createElement("option");
            //console.log(node);
            node.innerHTML=x;
            //console.log(node);
            area.appendChild(node);
        }
    };
};

实现效果:
默认的省市县节点
在这里插入图片描述
在这里插入图片描述

注意

因为文件与样式分离,所以一定要通过script标签方式引入area.js和main.js文件。

省市区三级联动 (JS) (function () {//命名空间 代码块 块级作用域 var provinceNode = document.getElementById('province'), cityNode = document.getElementById('city'), schoolNode = document.getElementById('school'); //省会的获取 var provinceStr = ''; for (var i. 阅读详情

相关推荐

JS实现省市区三级联动(json假数据)

省市级三级联动通常指的是在用户界面上,用户可以通过选择省份,然后基于所选择的省份选择对应的城市,最后基于所选择的城市选择对应的区县。同样地,为城市的元素添加change事件监听器,当用户选择城市时,根据所选城市动态生成区县的元素,并绑定到区县的元素上。为省份的元素添加change事件监听器,当用户选择省份时,根据所选省份动态生成城市的元素,并绑定到城市的元素上。当页面加载时,首先加载JSON数据。

rr20060119的博客 1671

JavaScript实现省市区三级联动

JavaScript实现省市区三级联动 之前的文章中我们说到过如何利用JavaScript实现二级联动,这次我们来说说如何利用JavaScript实现三级联动。效果如图: HTML代码: 请选择省份:<select name="" id="province"> <option value="">请选择省份......</option> </select> 请选择城市:<select name="" id="cit

qq_39155611的博客 1万+

JavaScript实现省市区县三级联动完整源码实例

在现代Web开发中,表单交互的智能化与用户体验优化成为前端设计的重要考量。其中,“省市区县”三级联动下拉选择作为常见的用户信息采集组件,广泛应用于注册、地址填写、物流配送等场景。该功能通过动态更新级联下拉框内容,实现从省份到城市再到区县的逐级筛选,有效提升了数据输入的准确性与操作效率。本章将深入剖析三级联动的核心逻辑与技术价值,阐述其在实际项目中的必要性,并引出基于原生JavaScript与HTMLselect元素构建该功能的整体思路。

weixin_42577243的博客 708

三级联动下拉列表的开发过程与范例

一、需求解析:

weixin_46038915的博客 3575

全志 T527_Android13 编译 [ 避坑必看 ]

Swap 概念: Linux中Swap(即:交换分区),类似于Windows的虚拟内存,就是当内存不足的时候,把一部分硬盘空间虚拟成内存使用,从而解决内存容量不足的情况。它的功能就是在内存不够的情况下,操作系统先把内存中暂时不用的数据,存到硬盘的交换空间,腾出内存来让别的程序运行。当输入编译命令make -j16 的时候,会有如下提示,这是官方建议通过减少编译线程来解决编译时消耗内存过大的问题。Android 13 系统的编译流程,编译一共分为两部分:内核编译与 Android 编译。

公众号:嵌入式分享 2111

西电微机系统课程设计步进电机开环控制系统

** 微机系统与应用课程设计 课题二 步进电机开环控制系统设计** 一、程设计目的 掌握微机系统总线与各芯片管脚连接方法,提高接口扩展硬件电路的连接能力。 加深对 A/D 和并行接口芯片的工作方式和编程方法的理解。 搞懂步进电机的工作原理及控制方式,掌握开环控制系统的设计思路和实现方法。 二、课程设计的内容 手动调节电位器旋钮(0V~5V),通过 ADC0809 模拟输入水库水位 0 米~50...

qq_37015775的博客 4035

java省市县联动 下拉框选择_原生JavaScript实现动态省市县三级联动下拉框菜单实例代码...

像平时购物选择地址时一样,通过选择的省动态加载城市列表,通过选择的城市动态加载县区列表,从而可以实现省市县的三级联动,下面使用原生的JavaScript来实现这个功能:先给大家展示下测试结果:未做任何选择时:选择时:代码如下所示:三级联动测试//用来获得option元素中selected属性为true的元素的idfunction Get_Selected_Id(place){var pro = d...

weixin_28452161的博客 718

An example: 2D immersed boundary lattice Boltzmann method code--By Timm Krüger.2011.

//谢谢Timm Krüger大佬的代码。 还是老样子,有啥问题Feel free to tell us~毕竟群众力量大嘛~QQ群:293267908。 // 话不多说,上干货! // ISBN 978-3-319-44649-3 (Electronic) // 978-3-319-44647-9 (Print) // http://www.springer.c...

weixin_37783345的博客 1418

原生JS实现省市区(县)三级联动选择

原文地址→看过来写在前面前段时间写一个关于天气的东西,里面的省市区(县)城市选择让我很头疼,在网上搜索出来大都是借助插件或者第三方库,感觉这样做代码会很重,所以索性就把几种城市选择的方式实现一遍,以备日后的不时之需。这三种方法都是针对pc端的,并且都是使用原生js实现的,连jq都没使用,于是代码有点繁琐额(尴尬)。。。。不过还是让我把原理讲完吧。源代码地址→传送门预览地址→传送门方法一:下拉选择框实

Visugar 9513

SDMA 如何实现设备对主机内存的访问

摘要:SDMA(System Direct Memory Access)是PCIe设备直接访问主机内存的核心机制,使外设无需CPU干预即可高效读写系统RAM。其实现原理包括:设备作为主控发起DMA请求,通过PCIe Memory TLP访问主机物理地址;完整通路涉及驱动分配DMA安全内存、设备配置、地址转换(IOMMU)和中断通知等步骤;关键技术涵盖地址类型(HPA/IOVA)、TLP格式、缓存一致性和安全防护机制。SDMA广泛应用于GPU、网卡、NVMe等高性能场景,是现代异构计算的基础技术,需软硬件协同

MHD0815的博客 240

LSTM在DNA序列分析中的应用:生物信息学的探索

长短期记忆网络(LSTM)是循环神经网络(RNN)的一个变种,旨在解决RNN在长序列数据中出现的梯度消失和梯度爆炸问题。LSTM通过引入“记忆单元”和三个门(输入门、遗忘门和输出门)来有效捕捉长距离依赖关系。这使得LSTM在处理DNA序列等时间序列数据时具有优势。LSTM在DNA序列分析中展现了强大的能力,能够捕捉复杂的序列特征,并提供高效的解决方案。本文从LSTM的基本原理、DNA序列特性、模型构建、训练过程到实际应用进行了详细阐述。

斌擎科技 749

原生js实现城市列表三级联动。

1.原生js实现三级城市联动 index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>城市选择的三种实现</title> &...

weixin_34128237的博客 2589

CATIA二次开发一一一获取属性的几种方法

这些方法覆盖了CATIA CAA开发中属性操作的典型场景,开发者可通过类型判断实现递归遍历、跨文档关联等复杂逻辑。此方法用于遍历对象的所有属性,获取属性键后可通过类型判断选择后续处理方式。适用于处理嵌套对象或关联对象的场景(如几何特征关联制造特征)。适用于简单属性值的直接读取(如版本号、状态标识等)。用于处理多值属性(如多选参数、装配体子件列表等)。用于处理跨文档引用(如零件关联图纸文件)。

工业软件开发 431

原生JS实现省市区(县)三级联动下拉列表

接到了公司的新需求,其中有涉及到要选择区域的三级联动下拉列表有关的东西。然后我到网上找有关这方面的资料,发现大多是用插件写的,但是我不想让代码变得很庞大,所以想用原生的JS来实现。实现的思路与主要代码如下: 主要的html代码: &amp;lt;fieldset&amp;gt; &amp;lt;legend&amp;gt;下拉选择框实现省市区(县)三级联动&amp;lt;/legend&amp;gt; &amp;lt;for

Handsome_fan的博客 6831

安卓新奇玩机工具全攻略___联发科MTK v6 限时免费 刷写固件工具操作

摘要:该文介绍一款限时免费的联发科V6刷机工具,支持小米、Vivo、Moto等多品牌设备,包括红米Note14Pro等机型(Klimt/Goya等代码)。工具需注册使用,提供EFS分区备份功能。作者提示工具可能触发杀毒警报,强调禁止非法用途,并说明部分联网工具可能失效。

小马哥的专栏 1316

DNA图谱分析:自动分析DNA图谱中的变异YOLOv5、YOLOv8、YOLOv10

YOLO(You Only Look Once)是一种基于卷积神经网络(CNN)的目标检测模型,因其高效的检测速度和优异的精度而广泛应用于计算机视觉任务。一次性检测:与传统的目标检测方法不同,YOLO通过回归方法同时预测多个边界框和类别信息,从而实现高效的目标检测。高精度与高速度:YOLO在检测精度和速度之间找到了平衡,适用于实时目标检测任务。

YOLO 730

省市县三级联动 javascript 原生实现实例

效果演示: 完整代码:     三级 省市区 var arr1=['安徽','河北','浙江'];//定义省的数组arr1 var arr2=[['合肥','滁州','芜湖'],['秦皇岛','唐山','邯郸'],['杭州','丽水','金华']];

cvper's world ! 928

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

原生js使用ajax实现省市县三级联动

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equ...

weixin_30492601的博客 253

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

用JavaScript实现动态省市县三级联动

像平时购物选择地址时一样,通过选择的省动态加载城市列表,通过选择的城市动态加载县区列表,从而可以实现省市县的三级联动,下面使用原生的JavaScript来实现这个功能: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 3...

weixin_34290096的博客 618

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

移动端纯原生JS不依赖AJAX后台服务器实现省市县三级联动

最近好多天没有更新文章,是因为公司的项目忙的不行。今天有点时间,就突然想起在移动端项目中遇到三级联动的问题,网上查了很多资料,都是依赖各种插件,或者晦涩难于理解。于是,自己决定写一个出来。 当然,没有用到别的插件类库,也没有用ajax。写完这个小demo也学到不少,现在分享给大家代码。因为代码较多,我就不一个个解释了,源码里面添加了很多注释。 为了便于大家使用,我将html精简了许多。 结尾

大灰狼的小绵羊哥哥的博客 2168

利用 jQuery实现省市县三级联动

在没有接触jQuery之前,写三级联动菜单都是利用原生JavaScript来实现。在接触jQuery之后,感觉上比JavaScript使用起来更加方便。 在写demo过程中又接触到了三级联动菜单,换用jQuery来写三级联动。 本篇文章中的数据没有使用Ajax,数据不是从数据库动态读取的。只是尝试用jQuery来改变以前用原生JS写三级联动的方法。 省市县的数据用三维数组创建,定义一个JS文件来存放。由于数据量较大,此处不做展示。文件名为 ProvinceCity.js。 页面元素中设置一个div,id为t

一个无聊的前端写点无聊的东西 1246

移动端纯原生JS不依赖ajax后台服务器实现省市县三级联动

最近好多天没有更新文章,是因为公司的项目忙的不行。今天有点时间,就突然想起在移动端项目中遇到三级联动的问题,网上查了很多资料,都是依赖各种插件,或者晦涩难于理解。于是,自己决定写一个出来。 当然,没有用到别的插件类库,也没有用ajax。写完这个小demo也学到不少,现在分享给大家代码。因为代码较多,我就不一个个解释了,源码里面添加了很多注释。 为了便于大家使用,我将html精简了许多。 结尾...

weixin_30892037的博客 101
上一篇: jQuery实现tab选项卡切换
下一篇: 正则表达式的介绍及常用方法
伦为JAY下囚
博客等级 码龄7年 52粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值