Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >无限层级目录树

无限层级目录树

作者头像
777nx
发布于 2023-10-18 07:14:12
发布于 2023-10-18 07:14:12
29700
代码可运行
举报
运行总次数:0
代码可运行

题目

实现一个无限层级的目录树UI,要求不仅限于可对任意项进行勾选,且能实时获取到树的选择值。不限技术栈,但是不允许使用或复制(代码)任何第三方组件或UI库。你可以寻求一切你能寻求的帮助(开卷考)。

答案

实现一个无限层级的目录树UI并实现勾选功能,并能实时获取选择值是一个相对复杂的任务,需要使用HTML、CSS和JavaScript来完成。以下是一个简单的示例,你可以根据需要进行扩展和改进:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>无限层级目录树</title>
    <link rel="stylesheet" href="styles.css">
</head>
<body>
    <div id="tree"></div>

    <script src="script.js"></script>
</body>
</html>

CSS (styles.css):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.tree-item {
    margin-left: 20px;
}

.checkbox {
    margin-right: 10px;
}

JavaScript (script.js):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const treeData = [
    {
        label: 'Item 1',
        children: [
            {
                label: 'Item 1.1',
                children: [
                    {
                        label: 'Item 1.1.1',
                        children: []
                    },
                    {
                        label: 'Item 1.1.2',
                        children: []
                    }
                ]
            },
            {
                label: 'Item 1.2',
                children: []
            }
        ]
    },
    {
        label: 'Item 2',
        children: [
            {
                label: 'Item 2.1',
                children: []
            }
        ]
    }
];

function createTreeItem(item) {
    const treeItem = document.createElement('div');
    treeItem.classList.add('tree-item');

    const checkbox = document.createElement('input');
    checkbox.type = 'checkbox';
    checkbox.classList.add('checkbox');
    treeItem.appendChild(checkbox);

    const label = document.createElement('label');
    label.textContent = item.label;
    treeItem.appendChild(label);

    checkbox.addEventListener('change', () => {
        updateSelectedValues();
    });

    if (item.children && item.children.length > 0) {
        const childrenContainer = document.createElement('div');
        item.children.forEach(child => {
            childrenContainer.appendChild(createTreeItem(child));
        });
        treeItem.appendChild(childrenContainer);
    }

    return treeItem;
}

function updateSelectedValues() {
    const selectedValues = [];
    const checkboxes = document.querySelectorAll('.checkbox');
    checkboxes.forEach(checkbox => {
        if (checkbox.checked) {
            selectedValues.push(checkbox.nextSibling.textContent);
        }
    });

    console.log('Selected Values:', selectedValues);
}

const treeContainer = document.getElementById('tree');
treeData.forEach(item => {
    treeContainer.appendChild(createTreeItem(item));
});

这个示例使用了HTML、CSS和JavaScript来实现了一个简单的无限层级目录树UI,并在勾选时实时获取了选择值。你可以根据实际需求对代码进行修改和扩展。如果你需要更复杂的功能或样式,可能需要进一步的开发和优化。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-10-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
使用纯 html + javascript 开发一个本地音乐播放器
本文介绍不使用任何前端开发框架,仅凭借原生的 html + JavaScript,实现一个简单的本地音乐播放器的实现步骤。
编程小妖女
2025/06/08
2400
使用纯 html + javascript 开发一个本地音乐播放器
【CodeBuddy】三分钟开发一个实用小功能之:九宫格图片切割&生成器
我正在参加CodeBuddy「首席试玩官」内容创作大赛,本文所使用的 CodeBuddy 免费下载链接: 腾讯云代码助手 CodeBuddy - AI 时代的智能编程伙伴
Jimaks
2025/05/22
1060
【CodeBuddy】三分钟开发一个实用小功能之:九宫格图片切割&生成器
CodeBuddy跨界篇 | 产品经理写代码?不,你错了,我只是想画原型图
今天在上班期间,无意间听到了产品经理正在发愁,说最近工作比较忙,活比较多,有了新需求要花费大量时间思考方案,还要写需求文档,写完需求文档还要出开发原型给开发讲,愁死人了。听到这我突然就想到,上次我在我本机的VSCode 装了CodeBuddy 插件之后,利用 Craft 几句话就做出来一个数独游戏的事。那么我就想,我是不是也可以用VSCode 来直接出开发原型图呢?如果真的能出,明天就可以给产品经理指一条明路了,哈哈。
六月的雨在Tencent
2025/05/15
6731
29·灵魂前端工程师养成-封装DOM库
-多年互联网运维工作经验,曾负责过大规模集群架构自动化运维管理工作。 -擅长Web集群架构与自动化运维,曾负责国内某大型金融公司运维工作。 -devops项目经理兼DBA。 -开发过一套自动化运维平台(功能如下): 1)整合了各个公有云API,自主创建云主机。 2)ELK自动化收集日志功能。 3)Saltstack自动化运维统一配置管理工具。 4)Git、Jenkins自动化代码上线及自动化测试平台。 5)堡垒机,连接Linux、Windows平台及日志审计。 6)SQL执行及审批流程。 7)慢查询日志分析web界面。
DriverZeng
2022/09/26
2.7K0
29·灵魂前端工程师养成-封装DOM库
520回忆地图,CodeBuddy + EdgeOne Pages MCP 送独一无二的惊喜给她!
520 是一个非常有意义的日子,用一个特别的 web 项目来表达心意,非常有创意!可以构思一个既新颖、有彩蛋,又相对容易在短时间内实现并部署的 web 项目:
Lion 莱恩呀
2025/05/12
3121
520回忆地图,CodeBuddy + EdgeOne Pages MCP 送独一无二的惊喜给她!
WebComponent魔法堂:深究Custom Element 之 面向痛点编程
前言  最近加入到新项目组负责前端技术预研和选型,一直偏向于以Polymer为代表的WebComponent技术线,于是查阅各类资料想说服老大向这方面靠,最后得到的结果是:"资料99%是英语无所谓,最重要是UI/UX上符合要求,技术的事你说了算。",于是我只好乖乖地去学UI/UX设计的事,木有设计师撑腰的前端是苦逼的:(嘈吐一地后,还是挤点时间总结一下WebComponent的内容吧,为以后作培训材料作点准备。 浮在水面上的痛 组件噪音太多了!  在使用Bootstrap的Modal组件时,我们不免要Ctr
^_^肥仔John
2018/01/18
9180
WebComponent魔法堂:深究Custom Element 之 面向痛点编程
【译】用纯JavaScript写一个简单的MVC App
我想使用model-view-controller体系结构模式并用纯JavaScript编写一个简单的应用程序。所以我着手做了,下面就是。希望能帮你理解MVC,因为这是一个很难理解的概念,刚接触时候会很疑惑。
Jimmy_is_jimmy
2020/03/20
2.2K0
【译】用纯JavaScript写一个简单的MVC App
DOM操作
1.概述 1.1DOM DOM是JavaScript操作网页的接口,全称为“文档对象模型”(Document Object Model)。文档对象模型 (DOM) 是HTML和XML文档的编程接口。它给文档(结构树)提供了一个结构化的表述并且定义了一种方式—程序可以对结构树进行访问,以改变文档的结构,样式和内容。 浏览器会根据DOM模型,将结构化文档(比如HTML和XML)解析成一系列的节点,再由这些节点组成一个树状结构(DOM Tree)。所有的节点和最终的树状结构,都有规范的对外接口。所以,DOM可以理
小胖
2018/06/27
2K0
200行Html5+CSS3+JS代码实现动态圣诞树
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/164255.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/15
4.8K0
200行Html5+CSS3+JS代码实现动态圣诞树
28·灵魂前端工程师养成-DOM编程
-多年互联网运维工作经验,曾负责过大规模集群架构自动化运维管理工作。 -擅长Web集群架构与自动化运维,曾负责国内某大型金融公司运维工作。 -devops项目经理兼DBA。 -开发过一套自动化运维平台(功能如下): 1)整合了各个公有云API,自主创建云主机。 2)ELK自动化收集日志功能。 3)Saltstack自动化运维统一配置管理工具。 4)Git、Jenkins自动化代码上线及自动化测试平台。 5)堡垒机,连接Linux、Windows平台及日志审计。 6)SQL执行及审批流程。 7)慢查询日志分析web界面。
DriverZeng
2022/09/26
4680
28·灵魂前端工程师养成-DOM编程
【Java 进阶篇】深入理解 JavaScript DOM Node 对象
在前端开发中,与HTML文档进行交互是一项基本任务。文档对象模型(Document Object Model,简称DOM)为开发者提供了一种以编程方式访问和操作HTML文档的方式。DOM的核心是节点(Node)对象,它代表了文档中的各个部分。本博客将深入探讨JavaScript DOM Node对象,帮助您更好地理解它的作用和如何使用。
繁依Fanyi
2023/10/19
4320
纯原生组件化-模块化的探索
想象有这样的一个场景,类似资料卡的东东,需要在页面中展示头像和用户的名称。 头像在左,宽高100px,圆形; 姓名在右,字号16px,垂直居中。
贾顺名
2019/12/09
8580
纯原生组件化-模块化的探索
Vue实现无限级树形选择器(无第三方依赖)
想要在 Vue 中实现一个这样的无限级树形选择器其实并不难,关键点在于利用 递归组件 和 高阶事件监听,下面我们就一步步来实现它。
茶无味的一天
2022/10/07
1.1K0
在线密码生成器
代码取自开源项目50projects50days,用作个人学习和巩固三件套的知识,增加了注释,可能会有小改动。
客怎眠qvq
2022/11/01
6.4K0
在线密码生成器
移除jQuery好像也没那么难
jQuery 是一个非常实用且实用的库,但随着浏览器对 ES6 的广泛支持(截至撰写本文时超过 96%),现在可能是时候从 jQuery 过渡到原生 JavaScript 了。我最近从我的博客中移除了 jQuery,并发现自己不断地在谷歌上搜索一些模式。为了节省大家的时间,我编写了这个实用的参考指南,列出了一些最常见的 jQuery 模式及其在 JavaScript 中的等价物。我们将涵盖如何从这些概念和函数迁移到纯 JavaScript。
chuckQu
2024/07/10
5560
移除jQuery好像也没那么难
【CodeBuddy】三分钟开发一个实用小功能之:数字华容道拼图
我正在参加CodeBuddy「首席试玩官」内容创作大赛,本文所使用的 CodeBuddy 免费下载链接: 腾讯云代码助手 CodeBuddy - AI 时代的智能编程伙伴
Jimaks
2025/05/20
1200
【CodeBuddy】三分钟开发一个实用小功能之:数字华容道拼图
腾讯云COS MCP Server + CodeBuddy ,让你的idea 不止停留在想象中...
最近在一次上班过程中听到了产品经理的抱怨,后来一时兴起就给产品经理写了一篇基于腾讯云CodeBuddy 和 EdgeOne Pages MCP Server帮助产品经理快速落地原型图的示例,给产品经理看后,产品经理表示很满意,在实现上没什么技术上的门槛,效果上远比其自身苦哈哈画两天原型图的效果要好很多,最重要是这个还很快,两句话搞定原型图。
六月的雨在Tencent
2025/05/18
7591
抛开插件,你真的懂拖动怎么实现吗?
回到正题,本章将分享一些关于 Javascript 中拖动的内容,探索拖动过程的奥秘。👏
zz_jesse
2024/06/18
1290
抛开插件,你真的懂拖动怎么实现吗?
「中午吃什么」小程序:从纠结中解放的自助小助手
最近不知道怎么回事,一到中午我就开始“选择困难症”发作。外卖平台翻了十几分钟,结果最后还是点了昨天的那家麻辣烫。其实我也知道附近就那几家店,但每次都想“换点别的”,却又拿不定主意。于是我突发奇想,干脆写一个“随机午饭推荐器”,每天一点,点开一看,吃啥它说了算。
繁依Fanyi
2025/05/15
1230
HTML5 File API 使用技巧
在 HTML5 的 input 标签中,新增了一个 type=file 属性的表单控件。这个控件可以让我们能调出文件选择窗口然后读取这些文件的内容成为可能。
多云转晴
2019/10/22
2.6K0
相关推荐
使用纯 html + javascript 开发一个本地音乐播放器
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验