当前位置: 首页 > wzjs >正文

wordpress整站cdn十大免费最亏的免费app

wordpress整站cdn,十大免费最亏的免费app,西安便民信息发布平台,成都新都建设银行网站在前端开发中,树形菜单是一种常见且实用的组件,它能够以层级分明的结构展示数据,方便用户快速浏览和操作。本文将详细介绍如何使用 JavaScript 实现一个树形菜单 功能示例: 一、数据获取与解析 实现树形菜单的第一步是获取数据。…

在前端开发中,树形菜单是一种常见且实用的组件,它能够以层级分明的结构展示数据,方便用户快速浏览和操作。本文将详细介绍如何使用 JavaScript 实现一个树形菜单

功能示例:


一、数据获取与解析
实现树形菜单的第一步是获取数据。在示例代码中,我们使用XMLHttpRequest对象从本地 JSON 文件recursion.json中获取数据。

let xhr = new XMLHttpRequest();
xhr.open('get', 'js/recursion.json', true);
xhr.send();
xhr.onreadystatechange = function() {
    if (xhr.readyState == 4 && xhr.status == 200) {
        let text = xhr.responseText;
        // console.log(text);
        data = JSON.parse(text);
        // 将数据转换为树形,嵌套
        let menudata = buildmenu(data, 0)
        console.log(menudata);
        // 接着获取到页面上的div,调用渲染函数,输出到页面上
        document.getElementsByClassName('items')[0].innerHTML = renders(menudata);
    }
};
AI写代码
javascript
运行

上述代码中,open方法用于初始化请求,参数分别为请求方法(get)、请求地址(js/recursion.json)和是否异步(true)。send方法发送请求,onreadystatechange事件监听请求状态变化,当请求完成且状态码为 200 时,将响应文本通过JSON.parse方法解析为 JavaScript 对象,便于后续处理

二、数据处理:构建树形结构
获取到的数据通常是扁平化的,需要将其转换为树形结构,以便于展示。这一步通过递归函数buildmenu实现:

// 这个是递归函数,将数据展示的形式进行改变
function buildmenu(data, pid) {
    let result = [];
    for (let i in data) {
        if (data[i].pid == pid) {
            result.push(data[i]);
            result[result.length - 1].child = buildmenu(data, data[i].id);
        }
    }
    return result;
}
AI写代码
javascript
运行

该函数接收两个参数:原始数据data和父节点 IDpid。在循环遍历数据过程中,筛选出父节点 ID 与传入的pid相同的节点,将其添加到结果数组result中,并递归调用buildmenu函数,将子节点构建为树形结构,赋值给当前节点的child属性。最终返回构建好的树形数据

三、页面渲染:将数据转换为 DOM 结构
有了树形数据后,需要将其渲染到页面上。renders函数负责将树形数据转换为 HTML 字符串,并插入到页面中:

function renders(data) {
    let str = '';
    for (let item of data) {
        str += `<div class="box">`;
        if (item.child.length > 0) {
            str += `
        <p class="title" οnclick="click_toggle(this)">${item.name}</p>
        <div style="display: none;" class="child">`;
            str += renders(item.child);
            str += `</div>`;
        } else {
            str += `<p class="title" οnclick="get_self('${item.name}')">${item.name}</p>`;
        }
        str += `</div>`;
    }
    return str;
}
AI写代码
javascript
运行

renders函数同样使用递归方式遍历树形数据。对于每个节点,如果存在子节点,则创建一个可展开 / 收起的标题元素,并递归调用renders函数渲染子节点;如果不存在子节点,则直接创建一个普通标题元素。最后将生成的 HTML 字符串返回,通过innerHTML属性插入到页面指定元素中。

四、交互功能实现
1. 展开与收起
为了实现树形菜单的展开与收起功能,我们定义了click_toggle函数:

function click_toggle(element){
    let childitem=element.nextElementSibling
    
    if(childitem.style.display==="block"){
        childitem.style.display="none";
    }
    else{
        childitem.style.display="block";
    }
}
AI写代码
javascript
运行

该函数接收一个 DOM 元素(标题元素)作为参数,获取其下一个兄弟元素(即子节点容器),根据子节点容器的显示状态切换其display属性,从而实现展开与收起效果。

2. 节点点击事件
对于叶子节点,我们定义了get_self函数,用于处理节点点击事件:

function get_self(self){
    alert(self);
}
AI写代码
javascript
运行
在实际应用中,可以根据需求将alert替换为更复杂的业务逻辑,例如跳转到相关页面、展示详细信息等。

五、CSS 样式美化
为了使树形菜单在页面上展示得更加美观,我们使用 CSS 对其进行样式定义:

body{
                background-color: lightblue;
            }
            h1{
                width: 100%;
                text-align: center;
            }
            .items{
                font-size: 20px;
                color: white;
                margin: 10px auto;
                width: 40%;
                min-height: 100vh;
            }
            .title{
                width: 100%;
                display: flex;
                align-items: center;
                justify-content: space-between;
                /* display: none; */
            }
            .title:hover{
                background-color: cornflowerblue;
            }
            .child{
                width: 95%;
                margin-left: 5%;
                display: flex;
                align-items: center;
                justify-content: space-between;
            }
            .box{
                width: 95%;
                border-bottom: 1px solid;
                margin-left: 5%;
                margin-top: 10px;
            }
AI写代码
css

上述 CSS 代码设置了页面背景颜色、标题样式、菜单容器样式、标题元素样式以及子节点容器样式等,使树形菜单在视觉上更加清晰和美观。

六、总结与优化方向
通过以上步骤,我们成功实现了一个功能完整的树形菜单。从数据获取、处理到页面渲染和交互,每一个环节都紧密相连,共同构成了一个实用的前端组件。

http://www.dtcms.com/wzjs/246914.html

相关文章:

  • 做网站基础互联网营销师是做什么的
  • 巩义网站建设方案表谷歌外贸平台
  • 青州做网站的网络公司福州关键词排名软件
  • 万峰科技著.asp.net网站开发四酷全书电子工业出版社360网站推广官网
  • 设计配色的网站推广网络营销案例
  • 孝感个人网站建设沈阳网站关键词优化多少钱
  • 产品设计师网站优化服务是什么意思
  • 手机网站制作平台有哪些直接进入网站的代码
  • 网站建设培训龙岗每日新闻简报
  • 海珠网站建设公司龙岩seo
  • 重点专业建设网站 建设方案网站收录平台
  • 学计算机网站开发好吗网络运营培训班多少钱
  • 大学生个人网站怎么做北京十大营销策划公司
  • 做新闻的网站怎样赚钱天津百度推广公司电话
  • WordPress日历样式云seo关键词排名优化软件
  • 古典风网站泾县网站seo优化排名
  • 正规的网站建设公司net的网站建设
  • 怎么查网站做404页面没营销软件哪个好
  • 郑州网站开发网络营销总监岗位职责
  • 标准件做啥网站南通百度seo代理
  • 网络推广和网站推广的关系网站的seo方案
  • 专门做正品的网站小程序开发教程
  • 用四字成语做网站域名好吗国外比较开放的社交软件
  • 哪个网站做h5最好360推广平台登录入口
  • 部门网站建设自查报告百度seo自动优化
  • 做矿业的郑州公司网站企业网站推广方法
  • 豆瓣 wordpress 插件短视频seo公司
  • 北京做企业网站的公司品牌营销是什么
  • 聊城做网站多少钱app拉新推广代理
  • 本地网站建设教程xampp图片外链在线生成网址