省、市、区三级联动

简介: 省、市、区三级联动

这篇博客也是一个练习小项目,话不多说,直接上代码;

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title></title>
    <style>
      .shengf {
        width: 110px;
      }
 
      .shi {
        width: 110px;
      }
 
      .qux {
        width: 110px;
      }
    </style>
  </head>
  <body>
    <select class="shengf" onchange="fn()">
      <option value="">请选择省份</option>
    </select>
    <select class="shi" onchange="fnn()">
      <option value="">请先选择省份</option>
    </select>
    <select class="qux">
      <option value="">请先选择省份</option>
    </select>
    <script src="index.js"></script>
  </body>
</html>

还是老样子,先把样式搞出来,大家不要学我啊,我写的并不是很规范!

//获取HTML中的下拉框1 shengf
let shengf = document.getElementsByClassName('shengf')[0];
//获取HTML中的下拉框2 shi
let shi = document.getElementsByClassName('shi')[0];
//获取HTML中的下拉框3 qux
let qux = document.getElementsByClassName('qux')[0];
//声明一个全局变量 ld
let ld;
//声明new XMLHttpRequest
let doo = new XMLHttpRequest();
//使用 open 方法指定要请求的地址、类型和方式
doo.open('get','sj.json',true);
//使用send方法发送请求
doo.send();
//绑定 onreadystatechange 事件
doo.onreadystatechange = function(){
  if(doo.readyState == 4 && doo.status == 200){
      let text = doo.responseText;
      console.log(text);
      let data = JSON.parse(text);
      console.log(data);
      ld = data;
      sj();
  }
}
  // 判断 readyState 和 status 的状态
   // 接收数据通过 json 转换使用,是用json将数据转化为js可用的形式
   //调用sj
 
//创建渲染函数  sj
function sj (){
  let str = "<option>请选择省份</option>";
  for(let i =0;i<ld.length;i++){
    str +=`<option value="${i}">${ld[i].sheng}</option>`;
  }
  shengf.innerHTML = str;
}
  //声明一个空字符串 str(<option value="">请选择省份</option>)
  //for循环所有data数据
    //将json数据与HTML的省份拼接数据拼接
 //用innerHTML给下拉框省份渲染
 
//声明一个全局变量shengval
let shengval ;
//给下拉框1绑定onchange点击事件
function fn(){
  let strr = "<option>请选择市</option>";
  shengval=document.getElementsByClassName('shengf')[0].value;
  //console.log(shengf)
  for(let i =0;i<ld[shengval].childer.length;i++){
    strr +=`<option value="${i}">${ld[shengval].childer[i].shi}</option>`;
  }
  shi.innerHTML= strr;
  qux.innerHTML= "<option>请先选择市</option>";
}
  // 获取sheng的下拉框选中的值 
  // 声明一个字符串  strr(<option value="">请选择省份</option>)
  // 循环数据 ld[shengval].childer.length
    // 拼接 的是 ld[shengval].childer[i].shi
  // 渲染到市这个下拉框里边
 
 
let shival;
//给下拉框2绑定onchange点击事件
function fnn(){
  let strrr = "<option>请选择区</option>";
  shival=document.getElementsByClassName('shi')[0].value;
  for(let a = 0; a<ld[shengval].childer[shival].childer.length;a++){
    strrr +=`<option value="${a}">${ld[shengval].childer[shival].childer[a]}</option>`;
  }
  qux.innerHTML = strrr;
}
    //声明一个空字符串 strrr(<option value="">请选择省份</option>)
    //获取shi的下拉框选中的值 
    //循环数剧 ld[shengval].childer.length(先找到省,在通过下标找到省里的市,以及childer里的区)
       //拼接 ld[shengval].childer[i].区(省、市、区)
    //渲染到区的下拉框里
 

这是js里执行的操作,这个功能呢也是非常的简单啊,不过要记住一点,这里面用到的是onchange

事件,还有一点要记住渲染事件那里是只把省份渲染进去。

相关文章
超强视频播放器PotPlayer
超强视频播放器PotPlayer
525 0
|
算法 调度
详解操作系统的调度
详解操作系统的调度
1063 0
|
3月前
|
网络协议 安全 数据建模
免费SSL 证书怎么申请?2026年阿里云 SSL 证书申请全流程(新手教程)
阿里云免费 SSL 证书申请核心是 “确认域名归属”,整个流程约半小时,关键在于仔细核对信息、正确添加解析记录。若仅用于测试或临时场景,免费证书足够;正式业务网站(尤其是涉及登录、支付),建议升级为有效期更长、功能更全的正式证书(如 DV、OV 证书)。定期检查证书到期时间,及时更新,才能持续保障网站数据传输安全。
|
算法
面试场景题:如何设计一个抢红包随机算法
本文详细解析了抢红包随机算法的设计与实现,涵盖三种解法:随机分配法、二倍均值法和线段切割法。随机分配法通过逐次随机分配金额确保总额不变,但易导致两极分化;二倍均值法优化了金额分布,使每次抢到的金额更均衡;线段切割法则将总金额视为线段,通过随机切割点生成子金额,手气最佳金额可能更高。代码示例清晰,结果对比直观,为面试中类似算法题提供了全面思路。
1922 16
|
网络协议 JavaScript 前端开发
Java一分钟之-GraalVM Native Image:构建原生可执行文件
【6月更文挑战第13天】GraalVM Native Image是Java开发的创新技术,它将应用编译成独立的原生可执行文件,实现快速启动和低内存消耗,对微服务、桌面应用和嵌入式系统有重大影响。本文讨论了如何使用Native Image,包括常见挑战如反射与动态类加载、静态初始化问题和依赖冲突,并提供了解决方案和代码示例。通过合理规划和利用GraalVM工具,开发者可以克服这些问题,充分利用Native Image提升应用性能。
817 5
|
API 数据处理 开发者
Polars中的急性与惰性API:性能优化与数据处理策略
Polars中的急性与惰性API:性能优化与数据处理策略
375 1
|
人工智能 Kubernetes 异构计算
大道至简-基于ACK的Deepseek满血版分布式推理部署实战
本教程演示如何在ACK中多机分布式部署DeepSeek R1满血版。
|
小程序 JavaScript
微信小程序之input组件及其获取用户输入信息
微信小程序之input组件及其获取用户输入信息
393 2
|
JSON API 网络架构
Django 后端架构开发:DRF 高可用API设计与核心源码剖析
Django 后端架构开发:DRF 高可用API设计与核心源码剖析
670 2
|
缓存 开发框架 安全
【Uniapp 专栏】详解 Uniapp 的网络请求功能特性
【5月更文挑战第13天】Uniapp是一款跨平台开发框架,提供便捷的网络请求功能,支持HTTP/HTTPS协议及GET/POST等多种请求方法。它允许设置请求参数、处理响应数据,并有超时时间、缓存策略及错误处理机制。还能与状态管理、页面交互结合,确保数据安全并进行性能优化。通过案例和比较,展现了Uniapp在网络请求上的优势,为开发高质量移动应用奠定基础。理解和掌握这些特性对于创建出色应用体验至关重要。
644 1
【Uniapp 专栏】详解 Uniapp 的网络请求功能特性