如何使用JS动态构建目录树
发表于:2024-11-22 作者:千家信息网编辑
千家信息网最后更新 2024年11月22日,本篇文章给大家分享的是有关如何使用JS动态构建目录树,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。在使用frameset布局的时候,经常
千家信息网最后更新 2024年11月22日如何使用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安全错误
数据库的锁怎样保障安全
学术数据库名词解释
输入网络安全密码是多少
怎样写网络安全手抄报
湖北可爱互联网科技有限公司
魔兽世界以前十区哪些服务器
简单的档案数据库
重庆南岸软件开发公司
外包的项目云服务器由谁管理
execl爬虫爬数据库
艾尔登法环登录不了服务器贴吧
网页显示服务器资源不足
pvp服务器1.12.2
网络安全的ip过滤器
奇迹暖暖 只看数据库
华珍梅网络技术
新乡快传网络技术有限公司
网络安全小剧场小学生
区块链挖矿软件开发
263邮箱邮件服务器
市南区平台软件开发推荐
中国网络安全认证公司
fiverr进服务器慢
服务器基础
软件开发的工时费
视频会议服务器软件
网络安全敏感国家名单
sp_help 数据库名
软件开发办公室优点
收集整理校友信息数据库
网络安全法所成网络是指