省、市、区三级联动

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

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

<!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

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

相关文章
|
JavaScript 前端开发 数据安全/隐私保护
省 市 县/区地址库三级联动纯js版
省 市 县/区地址库三级联动纯js版
246 0
省 市 县/区地址库三级联动纯js版
|
定位技术
echart 全国地图 下钻省、市、区
echart 全国地图 下钻省、市、区
457 0
|
JavaScript 前端开发 API
省市县三级联动
上次找到地区编码后,就测试省市县。网上找到例子感觉不是很合适,然后修改了下。 本来是从自己数据库查询,但做测试的话,在网上找到了一个地区编码的api,然后就是跨域问题。原来用ajax访问失败,getJSON可以,但getJson有同步问题,设置了全局参数也不管用,只好重复使用了。
1289 0
|
2月前
17省1-购物单
17省1-购物单
14 0
|
2月前
|
SQL 存储 前端开发
省市县三级联动的实现方案
省市县三级联动的实现方案
96 0
|
存储 Java 数据库
超简单方法实现省/市/地区级联查询
本文的原文连接是: http://blog.csdn.net/freewebsys/article/details/48829517 未经博主允许不得转载。 博主地址是:http://blog.csdn.net/freewebsys 1,关于中国地址 开发业务的时候遇到一个问题 需要弄一个省、市,地区的级联查询。 页面好做,但是数据不太好弄,不好组织。 开始考虑
4575 0
|
JavaScript 数据库 前端开发
|
索引
三级联动---城市地区选择
三级联动---城市地区选择有关数据源指给出了部分,仅作参考,其中提供了北京和天津两组数据作为测试用。   示例展示:   选择城市选择区县选择地区             示例代码: 三级联动 ...
958 0