js实现省市区三级联动非select下拉框版

在网上搜三级联动发现都是用option写的,突发奇想用其他方式写了一个,自我感觉效果还不错,大家感兴趣的可以看看,不说废话,大家看效果

代码如下,小白写的有点乱,大家想看的就看看

1.html代码

<div class="box">
        <section class="province">省</section>
        <section class="city">市</section>
        <section class="area">区</section>

        <div class="si">
        </div>
</div>

2.css代码

<style>
        .box{
            width: 800px;
            height: 50px;
            margin: 20px auto;
            background-color: rgb(48, 49, 48);
            border-radius: 10px;
            display: flex;
            justify-content: center;
            align-items: center;
        }
        .box section{
            display: inline-block;
            background-color: rgb(168, 165, 165);
            flex-grow: 1;
            height: 30px;
            margin-right: 10px;
            margin-left: 10px;
            border-radius: 5px;
            line-height: 30px;
            padding-left: 10px;
        }
        .box section:hover{
            cursor: pointer;
        }
        .si{
            display: none;
        }
        .box .all{
            display: block;
            width: 740px;
            background-color: rgb(211, 203, 203);
            padding: 20px;
            position: absolute;
            border-radius: 10px;
            top: 57px;
        }
        .box .all:hover{
            cursor: pointer;
        }
        .box .all span{
            display: inline-block;
            width: 130px;
            height: 30px;
            font-size: 13px;
            padding-left: 10px;
            line-height: 30px;
            border-radius: 5px;
            margin-left: 10px;
            border: 1px solid #000;
            background-color: white;
            box-sizing: border-box;
            margin-top: 10px;
        }
</style>

3.js代码

<script>
        // 获取内容
        var data = city_code// 这个是我的数据
        // 获取省市区
        var province = document.querySelector(".province")
        var city = document.querySelector(".city")
        var area = document.querySelector(".area")

        // 获取隐藏div
        var si = document.querySelector(".si")

        province.addEventListener("mouseover",function(){
            si.classList.add("all")
            // 选择省
            var html = ""
            var all = document.querySelector(".all")
            for(var i = 0;i<data.length;i++){
                const provinceName = data[i].name
                const provinceID = data[i].code
                html += `<span id="${provinceID}">${provinceName}</span>`
            }
            all.innerHTML=html

            var spanAll = document.querySelectorAll("span")
            for(var j =0;j<spanAll.length;j++){
                spanAll[j].addEventListener("click",function(){
                    province.innerHTML=this.innerText
                    province.id=this.id

                    html = ""

                    // 选择市
                    for(var k = 0;k<data.length;k++){
                if (data[k].code===province.id) {
                    var citys = data[k].city
                    for(var i = 0;i<citys.length;i++){
                    html +=`<span id="${citys[i].code}">${citys[i].name}</span>`
                    }
                    all.innerHTML=html
                    var spanAll = document.querySelectorAll("span")
                    for(var j =0;j<spanAll.length;j++){
                        spanAll[j].addEventListener("click",function(){
                        city.innerHTML=this.innerText
                        city.id=this.id

                        html = ""

                        //选择区
                        for(var k = 0;k<citys.length;k++){
                if (citys[k].code===city.id) {
                    var areas = citys[k].area
                    for(var i = 0;i<areas.length;i++){
                    html +=`<span id="${areas[i].code}">${areas[i].name}</span>`
                    }
                    all.innerHTML=html
                    var spanAll = document.querySelectorAll("span")
                    for(var j =0;j<spanAll.length;j++){
                        spanAll[j].addEventListener("click",function(){
                        area.innerHTML=this.innerText
                        area.id=this.id
                        si.classList.remove("all")
                        })
                    }
                    break
                }
            }

                        })
                    }
                    break
                }
            }    

                })
            }

        })

</script>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 原生js实现省市区三级联动代码分享

    前言 插件功能只满足我司业务需求,如果希望有更多功能的,可在下方留言,我尽量扩展!如果你有需要或者喜欢的话,可以给我github来个star 准备 <div id="wrap"></div> 页面中的容器标签不限制,只需给个id就行 var address = new Address({ wrapId: 'wrap', showArr: ['provinces','citys','areas'], beforeCreat:function(){ console.

  • JSON+Jquery省市区三级联动

    效果图如下所示: 废话不多说了,直接给大家贴代码了,具体代码如下所示: <script src="../Scripts/jquery-1.4.1.min.js" type="text/javascript"></script> <!--读取数据库,以json的格式输出,然后复制json数据,创建js文件--> <script src="json/CityJson.js" type="text/j

  • PHP+Mysql+Ajax+JS实现省市区三级联动

    基本思想就是:在JS动态创建select控件的option,通过Ajax获取在PHP从SQL数据库获取的省市区信息,代码有点长,但很多都是类似的,例如JS中省.市.区获取方法类似,PHP中通过参数不同执行不同的select语句. index.html代码: 复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xh

  • 从QQ网站中提取的纯JS省市区三级联动菜单

    我发现在 http://ip.qq.com/ 的网站中有QQ自己的JS省市区三级联动.所以研究了一下.他的界面如下:  何不直接使用的数据呢? 惊喜的是QQ是使用引用外部JS来实现三级联动的.JS如下:http://ip.qq.com/js/geo.js 使用方法如下: 复制代码 代码如下: <!DOCTYPE html> <html> <head> <title>QQ JS省市区三级联动</title> <!-- 直接使用QQ的省市区数据

  • javascript实现简单的省市区三级联动

    当我们注册一个网站,会看到省市区三级联动,下面简单介绍一下 <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="Generator" content="EditPlus®"> <meta name="Author" content="&

  • js实现一个省市区三级联动选择框代码分享

    运行效果:  ================================================= 部分代码: ================================================= 当然首先你数据库中要有这个table,不然你没有数据.....^_^ 复制代码 代码如下: <tr> <td class="tr pr10 "> 所在地: </td> <td class="tl">

  • 省市区三级联动下拉框菜单javascript版

    实现省市区三级下拉列表框,并且要实现联动效果. 方法一: 1.视图代码 <select class="prov" id="prov5" name="Province" data-code="@Model.Province"> </select> <select class="city" id="city5" name="City" dat

  • javascript省市区三级联动下拉框菜单实例演示

    本文实例讲述了javascript实现省市区三级联动下拉框菜单代码,像平时购物选择地址时一样,通过选择的省动态加载城市列表,通过选择的城市动态加载县区列表,从而可以实现省市县的三级联动,下面使用原生的JavaScript来实现这个功能,分享给大家供大家参考.具体如下: 运行效果截图如下: 具体代码如下: <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"

  • vue.js模仿京东省市区三级联动的选择组件实例代码

    前言 在最近的工作中需要一个盒京东购物车地址选择相似的一个省市区三级联动选择组件,google查了下都是下拉框形式的,于是自己写了一个,希望对使用vue开发项目的朋友有帮助,下面话不多说了,来一起看看详细的介绍吧. 显示效果如下: 注意:使用vue2.0开发 实例代码 html代码如下 <!--居住地址三级联动选项--> <section class="showChose" v-show="showChose"> <section cl

  • javascript实现省市区三级联动下拉框菜单

    本文实例讲述了javascript实现省市区三级联动下拉框菜单代码.分享给大家供大家参考.具体如下: 运行效果截图如下: 首先写一个静态的页面: <!DOCTYPE html> <html> <head> <title>QQ JS省市区三级联动</title> <!-- 使用QQ的省市区数据 --> <!-- <script type="text/javascript" src="http:/

随机推荐