9527 2022-06-15 20:01 采纳率: 100%
浏览 22
已结题

如何在模态窗口中选择城市和街道信息

img

在模态窗口中选择城市和街道信息,点击确实按钮将得到的城市和街道信息显示到地址文本框中

  • 写回答

1条回答 默认 最新

  • x磊 2022-06-22 21:12
    关注
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <style>
        #module {
            position: fixed;
            top: 100px;
            left: 50%;
            height: 100px;
            width: 400px;
            background-color: #eeeeee;
        }
    </style>
    <body>
    <div>
        请选择地址:<input type="text" id="address">
        <button onclick="openModule()">请选择...</button>
    </div>
    <div id="module" style="display: none">
        <div style="width: 100%;height: 30px">
            <button style="float: right" onclick="closeModule()">x</button>
        </div>
        <form>
            城市:
            <select id="city" onchange="changeCity()"></select>
            区域/街道:
            <select id="street"> </select>
            <input type="button" name="确认" onclick="confirmSelect()" value="确认"/>
        </form>
    </div>
    </body>
    <script>
        //数据初始化
        const cities = ["重庆", "北京"]
        const streetMap = {
            "重庆": ["渝北", "沙坪坝"],
            "北京": ["海淀", "丰台"]
        }
    
        //模态框元素
        const moduleEl = document.getElementById("module");
        //地址输入框元素
        const addressEl = document.getElementById("address");
        //城市下拉框元素
        const cityEl = document.getElementById("city");
        //街道下拉框元素
        const streetEl = document.getElementById("street");
    
        //下拉框初始化
        cities.forEach(city => {
            cityEl.options.add(new Option(city, city));
        })
        streetMap[cities[0]].forEach(street => {
            streetEl.options.add(new Option(street, street));
        })
    
        //打开模态框
        function openModule() {
            moduleEl.style.display = "block";
        }
    
        //确认选择
        function confirmSelect() {
            addressEl.value = cityEl.value + ", " + streetEl.value;
            closeModule();
        }
    
        //城市选择变化时
        function changeCity() {
            //清空街道下拉框
            streetEl.options.length = 0;
            //获取城市的值
            let city = cityEl.value;
            //获取城市对应的街道
            let streets = streetMap[city];
            //街道下拉框初始化
            streets.forEach(street => {
                streetEl.options.add(new Option(street, street));
            })
        }
        //关闭下拉框
        function closeModule() {
            moduleEl.style.display = "none";
        }
    </script>
    </html>
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 7月5日
  • 已采纳回答 6月27日
  • 创建了问题 6月15日

悬赏问题

  • ¥15 乘性高斯噪声在深度学习网络中的应用
  • ¥15 运筹学排序问题中的在线排序
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
  • ¥30 求一段fortran代码用IVF编译运行的结果
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥30 python代码,帮调试,帮帮忙吧