今日分享个三级联动

js代码

let xhr = new XMLHttpRequest();
// 创建一个新的XMLHttpRequest对象,命名为xhr。用来请求接口,处理异步操作;
// 这个对象用于在浏览器和服务器之间发送 HTTP 请求和接收响应。
xhr.open('get', 'js/index.json', true);
// 打开一个新的HTTP GET请求。// 请求的URL是'js/index.json'。// 第三个参数true表示请求是异步的。
xhr.send();
//发送要请求的要求
xhr.onreadystatechange = function() {// 设置一个事件监听器,当请求的状态发生变化时,这个函数就会被调用。if (xhr.readyState == 4 && xhr.status == 200) {// 检查请求是否已经完成(readyState == 4)并且是否成功(status == 200)。let text = xhr.responseText;// 获取响应的文本内容data = JSON.parse(text);// 将响应的文本内容解析为JSON对象,并将其赋值给变量data。item(data);//一进页面就渲染省级的数据,以方便点击省级时展现省级的数据}
};
let data = [];
//创建一个变量以方便存储数据
//获取想要的变量 省 市 区
//获取省市区三个下拉框
//用class选择器获取
let shengs = document.getElementsByClassName('shengs')[0];
let shis = document.getElementsByClassName('shis')[0];
let qus = document.getElementsByClassName('qus')[0];
//省市区三级联合
// 假设这是您的省份数据  
//在次选择请填写省份市都要重新渲染
// 省数据渲染 ,让一进页面就渲染
function item(data) {console.log(data)let str = "<option value=''>-请填写省份-</option>";//命名str为请填写省份for (let i = 0; i < data.length; i++) {//遍历数据和数组console.log(data[i]);str += `<option value="${i}">${data[i].name}</option>    `;//拼接省级的内容}shengs.innerHTML = str;//把渲染内容添加到省的下拉框中
}// 市区数据渲染      
function shi() {console.log(shengs.value)// 选完省份后市和区级下拉框变为请填写市区let str = "<option value=''>-请填写市区-</option>";//命名str为请填写市份console.log(data[shengs.value])for (let i = 0; i < data[shengs.value].children.length; i++) {//遍历省的值,也就是找省对应的市级数据//用省对应的下标去找市级数据console.log(data[shengs.value].children[i]);str += `<option value="${i}">${data[shengs.value].children[i].name}</option>    `;
// 渲染市区下拉菜单函数  }shis.innerHTML = str;//把渲染内容添加到市的下拉框中//当选别的省和市时初始化qus.innerHTML = str;//把渲染内容添加到市的下拉框中//当选别的省和市时初始化
}
// 渲染区县下拉菜单函数 
function qu() {console.log(data[shengs.value].children)let str = "<option value=''>-请填写区县-</option>";//命名str为请填写区县for (let i = 0; i < data[shengs.value].children[shis.value].children.length; i++) {//遍历省的值,也就是找省对应的市级数据的下标 的区级数据console.log(data[shengs.value].children[shis.value].children[i].name);str += `<option value="">${data[shengs.value].children[shis.value].children[i].name}</option>`;}//拼接从省的下标的市级数据的下标的区级数据qus.innerHTML = str;//把渲染内容添加到区级下拉框中
}
// 显示的内容为决定显示的字符串  
//在渲染里判断是否选择省份如果没选择省份就保持原样
// 如已经选择第二个就拼接请选择市,
// 如已经选择市份第三个就

html代码 

<!DOCTYPE html>
<html><head><meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1"><title>三级</title></head><body><select class="shengs" onchange="shi()"><option value="请选择省份">-请选择省份-</option><option class="sheng" value="河南省">河南省</option></select><select class="shis" onchange="qu()"><option value="请选择省份" >-请选择省份-</option></select><select class="qus"><option value=请选择省份 >-请选择省份-</option></select></body><script src="js/index.js"></script>
</html>

 

json数据

 

 

[{"name": "河南省","children": [{"name": "商丘市","children": [{"name": "城镇区"}, {"name": "上阵区"}]}, {"name": "上扬市","children": [{"name": "上扬区"}]}]}, {"name": "河东省","children": [{"name": "南阳市","children": [{"name": "商城区"}, {"name": "商长区"}]},{"name": "菏泽市","children": [{"name": "菏泽区"}]}]}, {"name": "江西省","children": [{"name": "南昌市","children": [{"name": "南昌区"},{"name": "九江区"}, {"name": "临川区"}]},{"name": "九江市","children": [{"name": "九上区"}]}, {"name": "临川市","children": [{"name": "临川区"}]}]},{"name": "东北省","children": [{"name": "三栋市","children": [{"name": "三一区"}]}]},{"name": "河北省","children": [{"name": "石家庄市","children": [{"name": "石家庄区"}]}]},{"name": "辽宁省","children": [{"name": "沈阳市","children": [{"name": "沈阳区"}, {"name": "皇姑区"}, {"name": "铁西区"}, {"name": "苏家屯区"}, {"name": "沈北新区"}]}, {"name": "抚顺市","children": [{"name": "和平区"}, {"name": "沈河区"}, {"name": "大东区"}]}, {"name": "大连市","children": [{"name": "于洪区"}, {"name": "辽中区"}]}]}, {"name": "黑龙江省","children": [{"name": "哈尔滨市","children": [{"name": "五常区"}, {"name": "双城区"}, {"name": "香坊区"}, {"name": "木兰县"}, {"name": "西安区"}]}, {"name": "齐齐哈尔市","children": [{"name": "齐齐哈尔区"}, {"name": "东安区"}, {"name": "向阳区"}, {"name": "尖山区"}, {"name": "新兴区"}]}, {"name": "鹤岗市","children": [{"name": "鹤岗区"}, {"name": "哈尔滨区"}, {"name": "道里区"}, {"name": "萨尔图区"}, {"name": "鸡冠区"}]}]}
]

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/659896.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

8-Docker网络模式之container

1.介绍 Docker container网络模式是指指定新创建的Docker容器和已经存在的一个容器共享一个Network Namespace,而不是和宿主机共享。 使用Docker container网络模式新建的容器不会创建的自己的网卡,配置自己的IP,而是和一个指定的容器共享IP、端口等。然而两个容器除了网络…

知识图谱推理方法综述

目录 前言1 基于符号表示的推理方法1.1 Axioms和Datalog1.2 图结构和规则学习1.3 TBox和ABox 2 基于向量表示的推理方法2.1 嵌入系列和Ontology Embedding2.2 向量的规则学习2.3 图神经网络 3 符号逻辑和表示学习的融合3.1 向量表示学习与本体规则学习3.2 规则演绎推理3.3 符号…

Oracle闪回日志管理(flashbackup log)

Oracle闪回日志管理&#xff08;flashbackup log&#xff09; 1.开启闪回日志 shutdown immediate startup mount; alter database archivelog; alter database flashback on; alter database open; 2、查看闪回日志保留期限 show parameter flash 默认是1440分钟&#xff0c…

Android Mac电脑更改aar中的文件再打包

一 问题 要在Mac电脑上替换AAR中的文件并重新打包。 二 解决方案 1.解压AAR文件 将AAR文件重命名为.zip&#xff0c;并解压缩它&#xff0c;得到一个文件夹。 2.替换文件 在解压后的文件夹中找到您想替换的文件&#xff0c;将其替换为新文件。 3.重新打包 打开终端&…

软件工程知识梳理4-详细设计

详细设计阶段的根本目标是确定应该怎样具体地实现所要求的系统&#xff0c;也就是说.经过这个阶段的设计工作.应该得出对目标系统的精确描述.从而在编码阶段可以把这个描述直接翻译成用某种程序设计语言书写的程序。 详细设计的的目标不仅仅是逻辑上正确地实现每个模块地功能&a…

java之手动创建spring-boot-3项目

手动创建 基于springboot3 正确配置maven的前提下&#xff0c;创建一个空的项目 复制下面的pom文件&#xff0c;使用maven下载依赖即可 前提是maven配置的没问题 pom.xml文件 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"htt…

手机屏幕生产厂污废水处理需要哪些工艺设备

随着手机行业的快速发展&#xff0c;手机屏幕生产厂的规模也越来越大&#xff0c;但同时也带来了大量的污废水排放问题。为了保护环境和人类的健康&#xff0c;手机屏幕生产厂需要采取适当的工艺设备来处理污废水。本文将介绍手机屏幕生产厂污废水处理所需的工艺设备。 首先&am…

计算机速成课Crash Course - 27. 3D 图形

今天继续计算机速成课Crash Course的系列讲解。 更多技术文章&#xff0c;全网首发公众号 “摸鱼IT” 锁定 -上午11点 - &#xff0c;感谢大家关注、转发、点赞&#xff01; 计算机速成课Crash Course - 27. 3D 图形 (qq.com) 27. 3D 图形 在过去五集&#xff0c;我们从基于…

Wireshark网络协议分析 - Wireshark速览

在我的博客阅读本文 文章目录 1. 版本与平台2. 快速上手2.1. 选择网络接口进行捕获&#xff08;Capture&#xff09;2.2. 以Ping命令为例进行抓包分析2.3. 设置合适的过滤表达式2.4. 数据包详情2.5. TCP/IP 四层模型 3. 参考资料 1. 版本与平台 Wireshark是一个开源的网络数据…

npm i 遇到了 npm ERR! code CERT_HAS_EXPIRED

npm i 遇到了 npm ERR! code CERT_HAS_EXPIRED 更新你的系统时间【命令 date】。确保你的计算机上的时间和时区设置正确&#xff0c;并且与当前时间相符。 清除你的 npm 缓存。使用 npm cache clean --force 命令清除你的 npm 缓存&#xff0c;关闭ssl验证&#xff0c;并重新运…

Python+Selenium+Unittest 之selenium15--等待时间

在正常的自动化过程中&#xff0c;如果整篇代码中没有加等待时间的话&#xff0c;有时候可能页面跳转或者还没开始点击就执行到下一个流程了&#xff0c;这时候因为页面没有加载完毕&#xff0c;所以有可能会导致找不到对应的元素而报错&#xff0c;因此我们需要在整个代码流程…

AlmaLinux上安装Docker

AlmaLinux上安装Docker 文章目录 AlmaLinux上安装Docker一、前言二、具体步骤1、Docker 下载更新系统包索引&#xff1a;添加Docker仓库&#xff1a;安装Docker引擎&#xff1a; 2、Docker服务启动启动Docker服务&#xff1a;设置Docker开机自启&#xff1a; 3、Docker 安装验证…

Android开发--ProgressBar应用显示测点数量

1.自定义ProgressBarView public class ProgressBarView extends View {private Paint mPaintBack;private Paint mPaint;private Paint mPaintText;private float process;int strokeWidth 3;//圈宽度int textSize 17;//字大小private long duration 1000;private float st…

一站式在线APP封装平台的革新之旅

随着移动互联网的快速发展&#xff0c;App已经成为我们日常生活中不可或缺的一部分。对于开发者而言&#xff0c;将创新的应用快速打包成APK格式&#xff0c;并进行有效分发&#xff0c;是确保应用生命周期成功的关键一步。传统的App打包过程往往需要复杂的环境配置、依赖管理以…

扩展学习|大数据分析整合到价值创造的大见解

文献来源:Saggi M K, Jain S. A survey towards an integration of big data analytics to big insights for value-creation[J]. Information Processing & Management, 2018, 54(5): 758-790. 下载链接:链接:https://pan.baidu.com/s/14IGaCOc-plxAiaVhwOgUvA 提取码…

Mamba系列日积月累(一):状态空间模型SSM的离散化过程推导

文章目录 1. 背景基础知识1.1 什么是状态空间模型&#xff08;State Space Model&#xff0c;SSM&#xff09;&#xff1f;1.2 什么是离散化&#xff08;Discretization&#xff09;&#xff1f;1.3 为什么需要离散化&#xff1f; 2. SSM离散化过程推导2.1 为什么在离散化过程中…

mybatis中使用小于号

mybatis中小于号没有办法直接写 方式一需要使用特殊转义字符&#xff1a; <例子 <select id"selectRolesPage" parameterType"java.util.Map" resultType"com.leilankeji.cn.dao.SysRole" >select*from t_sys_role<where><i…

无人机除冰保障电网稳定运行

无人机除冰保障电网稳定运行 近日&#xff0c;受低温雨雪冰冻天气影响&#xff0c;福鼎市多条输配电线路出现不同程度覆冰。 为保障福鼎电网安全可靠运行&#xff0c;供电所员工运用无人机飞行技术&#xff0c;通过在无人机下方悬挂器具&#xff0c;将无人机飞到10千伏青坑线…

电脑和手机连接酒店的wifi,网络不通导致charles无法抓手机的包

查看苹果手机&#xff0c;连wifi后的ip地址 电脑去ping 手机的ip地址&#xff0c;发现ping不通 解决方案&#xff1a; 应该是酒店wifi的问题&#xff0c;让朋友开个手机热点&#xff0c;电脑和我的手机都连这个热点&#xff0c;就可以抓包了

2024.1.31每日一题

LeetCode 找出不同元素数目差数组 2670. 找出不同元素数目差数组 - 力扣&#xff08;LeetCode&#xff09; 题目描述 给你一个下标从 0 开始的数组 nums &#xff0c;数组长度为 n 。 nums 的 不同元素数目差 数组可以用一个长度为 n 的数组 diff 表示&#xff0c;其中 di…