如何使用JS动态构建目录树
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,本篇文章给大家分享的是有关如何使用JS动态构建目录树,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。在使用frameset布局的时候,经常
千家信息网最后更新 2026年11月02日如何使用JS动态构建目录树
本篇文章给大家分享的是有关如何使用JS动态构建目录树,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
在使用frameset布局的时候,经常会用到目录树,我们可以把一棵树写死,但是更多的情况是,这棵树需要随时被改动,所以我们期望的是他能够被动态的构建。
MVC,算是了解一点,那下面就把这棵树根据M-V-C给拆开分解吧。

下面就来看看这棵树是怎么构建的。
Module [数据层]
var tree = { "id": 0, "a1": { "id": 1, "name": "a1", "children": { "b1": "b1_1", "b2": "b1_2", "b3": "b1_3" } }, "a2": { "id": 1, "name": "a2", "children": {} }, "a3": { "id": 1, "name": "a3", "children": { "b1": "b3_1", "b2": "b3_2", "b3": "b3_3" } } };这是一颗两层的目录树,用ID来表示层级关系,name来表示改层的名字(也就是节点Text内容吧)。
Control [控制层]
var Tree = function ( module ){ function createNodeList( obj ) { //创建ul节点和documentFragmeng中间变量 var n = document.createElement("ul"), docfrag = document.createDocumentFragment(); //判断obj是根节点还是孩子节点 if(obj.id == 0) { n.setAttribute("class", "tree_0"); for(var key in obj) { if(key == "id") continue; //将节点插入 var c = document.createElement("li"), span = document.createElement("span"); span.appendChild(document.createTextNode( obj[key].name )); c.appendChild(span); docfrag.appendChild( c ); } }else if(obj.id && obj.id == 1) { n.setAttribute("class", "tree_1"); for(var key in obj) { if(key == "id" || key == "name" || !obj.children) continue; for( var item in obj.children){ //将节点插入 var c = document.createElement("li"); c.appendChild(document.createTextNode( obj.children[item] )); docfrag.appendChild( c ); } } } n.appendChild( docfrag ); //返回开始构建的ul节点 return n; } //隐藏及显示 工具函数 function toggle(c){ c.style.display = ((c.style.display == "none") ? "" : "none"); } function createTree( obj ) { var root, child, count = 0; root = createNodeList( obj ); for(var key in obj){ if(obj[key] == "id" || !obj[key].children) continue; child = createNodeList(obj[key]); root.children[count].appendChild( child ); //count来判断插入的位置 count++; } return root; } var T = createTree(module); var list = T.children; for(var i = 0, len = list.length; i < len; i++){ list[i].getElementsByTagName("span")[0].onclick = function(){ var obj = this.nextSibling; toggle(obj); } } return T;}这里边创建了三个函数,其中
createNodeList() //适用于构建一个树子节点
其中使用documentFragment作为一个节点缓存器,先把节点放置到documentFragment中,然后统一插入到ul,这也是比较常用的使用方式。
createTree() //构建一棵树
基本整棵树的构建就是分为这两步,前者负责创建一个子节点,后者构建一棵树。
在这颗树中绑定了click事件,让其可以折叠,当然也可以在Tree这个类里绑定更多的方法,这个就靠自己发挥了。
View [视图层]
_window.onload = function(){ var T = new Tree(tree); document.getElementsByTagName("body")[0].appendChild(T);}整棵树的构建,主要用到的是DOM元素的处理,这个必须牢牢掌握!
以上就是如何使用JS动态构建目录树,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。
节点
目录
更多
动态
一棵树
函数
就是
知识
篇文章
实用
三个
个子
也就是
事件
位置
元素
内容
变量
名字
孩子
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
耶加雪菲
科技金融是不是互联网金融
互联网与科技发展
互联网中国科技
科技互联网技术
远拓互联网科技
撒么互联网科技公司
互联网科技汛
互联网科技素材视频竖屏
互联网科技公司需要的职位
互联网科技中介
福州新华互联网科技学校 知乎
互联网科技大赛获奖感言
合肥互联网科技公司公章图片
互联网方面的科技前沿
电子商务与互联网科技的关系
工业互联网科技成果转化
西安有哪些互联网高科技企业
互联网科技品牌
每日互联网科技新闻
广州淘业互联网络科技
互联网科技有限公司图片
互联网女皇 腾讯科技
奔汉互联网科技
成都狮子座互联网科技
互联网科技股有哪些
互联网科技扶贫时间
爱医互联网络科技
吉林省码上互联网科技电话
唯美互联网科技