收货地址之三级联动式菜单(省、市、区),利用AJAX通信,面向对象编程,并且将菜单放入指定容器中

效果图实现功能:各级菜单之间实现联动效果。请求方式:我是利用的AJAX请求数据,GET方式发送,利用了一个组件,将省份名和城市名存为对象直接发送给了服务端。后面我也会将组件的源码开源出来,以便你们理解。// HTML代码<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device
摘要由CSDN通过智能技术生成

效果图
在这里插入图片描述
实现功能:各级菜单之间实现联动效果。

请求方式:我是利用的AJAX请求数据,GET方式发送,利用了一个组件,将省份名和城市名存为对象直接发送给了服务端。后面我也会将组件的代码开源出来,以便你们理解。

// HTML代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        *{
    
            margin: 0;
            padding: 0;
        }
        #box{
    
            margin: 50px 300px;
        }
    </style>
</head>
<body>
    <div id="box"></div>
    <script type="module">
        import Menu from "./js/Menu.js"
        let div=document.querySelector("#box");
        let menu=new Menu();
        menu.appendTo(div);
    </script>
</body>
</html>

// JS代码

import QueryString from "./QueryString.js"
export default class Menu {
   
    elem;
    constructor(){
   
        this.elem=this.createMenu(); // 创建DOM元素
        this.ajax("province"); // 初次打开页面,设置菜单默认选项
    }
    createMenu(){
   
        if(this.elem) return this.elem;
        let div=document.createElement("div");// 创建最外层容器,用于存放所有的菜单容器
        this.render(div);// 创建菜单并渲染
        return div;
    }
    appendTo(parent){
    // 将该对象插入到指定容器中
        if(typeof parent==="string") parent=document.querySelector(parent);
        parent.appendChild(this.elem);
    }
    ajax(type,data){
    // 创建发送AJAX请求的方法,传入的参数为接口和请求数据
        if(data===undefined) data="";
        data=QueryString.stringify(data);
        var xhr=new XMLHttpRequest();
        xhr.addEventListener("load",e=>this.loadHanlder(e));
        xhr.open("GET","http://10.9.72.222:4008/"+type+"/?"+data);
        xhr.send();
    }
    render(parent){
   
        for(let i=0;i<3;i++){
    
            let div=document.createElement("div");// 菜单容器
            let div1=document.createElement("div");// 文本容器 
            let span1=document.createElement("span");// 存放选项的文本内容
            let span2=document.createElement("span");// 设置下拉箭头
            let ul=document.createElement("ul"); // 下拉菜单
            Object.assign(div.style,{
   
                marginLeft:"40px",
                cursor:'pointer',
                display:"inline-block",
                position:"relative",
                backgroundColor:'#fff',
                borderRadius: '4px',
   
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值