<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled 1</title>
<link rel="stylesheet" type="text/css" href="st/css/style.css" />
</head>
<body>
<div class="left_nav_content" id="tree">
<dl>
<dt class="folder_title">
<img alt="" src="st/img/expand_all.gif" />
<span>Project 01</dt>
<dd class="folder_content">
<dl>
<dt class="folder_title">
<img alt="" src="st/img/expand_all.gif" /> common</dt>
<dd class="folder_content">
<dl>
<dt class="folder_title">
<img alt="" src="st/img/expand_all.gif" /> css</dt>
<dd class="folder_content">
<dl>
<dt class="endnode">
<img alt="" src="st/img/endnode.png" /> style.css</dt>
</dl>
</dd>
</dl>
<dl>
<dt class="folder_title">
<img alt="" src="st/img/expand_all.gif" /> img</dt>
<dd class="folder_content">
<dl>
<dt class="endnode">
<img alt="" src="st/img/endnode.png" /> blank.png</dt>
</dl>
</dd>
</dl>
<dl>
<dt class="folder_title">
<img alt="" src="st/img/expand_all.gif" /> js</dt>
<dd class="folder_content">
<dl>
<dt class="endnode">
<img alt="" src="st/img/endnode.png" /> jmin.js</dt>
</dl>
</dd>
</dl>
</dd>
<dt class="endnode">
<img alt="" src="st/img/endnode.png" /> index.htm</dt>
</dl>
</dd>
</dl>
</div>
<script type="text/javascript" src="st/js/mm.js"></script>
<script type="text/javascript">
function getEvent(){
if(window.event) {return window.event;}
func=getEvent.caller;
while(func!=null){
var arg0=func.arguments[0];
if(arg0){
if((arg0.constructor==Event || arg0.constructor ==MouseEvent
|| arg0.constructor==KeyboardEvent)
||(typeof(arg0)=="object" && arg0.preventDefault
&& arg0.stopPropagation)){
return arg0;
}
}
func=func.caller;
}
return null;
}
//判断数据类型
function isNull(a){ return a === null;}
function isUndefined(a){ return a === undefined;}
function isNumber(a){ return typeof a === 'number';}
function isString(a){ return ('string'==typeof a||'object'==typeof a)&&a.constructor==String;}
function isBoolean(a){ return typeof a === 'boolean';}
function isDate(a){ return (typeof a=='object')&&a.constructor==Date; }
function isArray(a){ return Object.prototype.toString.apply(a) === '[object Array]';}
function isFunction(a){ return Object.prototype.toString.call(a) === '[object Function]';}
function isWindow(o){ return o && typeof o === 'object' && 'setInterval' in o;}
function isHTMLElement(a){var d = document.createElement("div");try{d.appendChild(a.cloneNode(true));return a.nodeType==1 ? true : false;}catch(e){return a==window || a==document;}}
var Tree = new Module({
id:"leftTree",
init:function(){
this.element = DOM.getElementById(this.id);
this.element.onclick=function(){
ModuleA.addEventListener('onclick A');
ModuleA.fireEvent('onclick A',[ModuleA]);
};
this.addEventListener('onclick A');
}
});
window.onload=function(){
MM.init([ModuleA]);
//ModuleA.init();
}
var TreeView =function(params){
if(!params) return null;
var self = this;
this.id = params.id;
this.element = this.childContainer = params.element;
this.className = params.className;
this.childNodes=[];
this.selectedNode = null;
this.childData = params.childData;
params.root = self;
this.initialize = function(){
if(self.childData.length>0){
for(var i in self.childData){
self.childData[i].root = params.root;
self.childData[i].parent = self;
self.childNodes.push(new TreeNode(self.childData[i]));
}
}
}
this.insertChild = function(params){
if(!params) return null;
params.nodeType="project";
self.childNodes.push(new TreeNode(params));
}
oElem = this.element;
if(oElem.addEventListener==undefined && !!oElem.attachEvent){
oElem.addEventListener=function(type,fn,sign){
if(!isFunction(fn) && isString(fn)) fn=new Function(fn);
if(!!isFunction(fn)) oElem.attachEvent("on"+type,fn);
};
}
function operate(){
var e = getEvent();
var src = e.srcElement||e.target;
var treeNode = src.treeNode;
while(!treeNode){
if(src.tagName=="DT"||src.tagName=="dt"||src.tagName=="BODY"||src.tagName=="BODY") break;
src = src.parentNode;
}
if(!!treeNode){
treeNode.root.selectedNode = treeNode
if(treeNode.expanded){
treeNode.expanded=false;
treeNode.collapse();
}
else{
treeNode.expanded=true;
treeNode.expand();
}
}
}
oElem.addEventListener('click',operate,false);
this.initialize();
}
var TreeNode = function(params){
if(!params) return null;
var self = this;
//create DOM
var dl = document.createElement("DL");
var dt = document.createElement("DT");
var dd = document.createElement("DD");
dl.treeNode = this;
dt.treeNode = this;
dd.treeNode = this;
dt.innerHTML = params.title;
dt.className = params.root.className[params.nodeType]['collapse'];
dd.style.display = "none";
dl.appendChild(dt);
dl.appendChild(dd);
//set property
this.element = dl;
this.title = dt;
this.childContainer = dd;
this.id = params.id;
this.nodeType = params.nodeType;
this.childNodes = [];
this.parent = params.parent;
this.childData = params.childData;
this.root = params.root;
this.expanded = false;
//set method
this.initialize = function(){
self.parent.childContainer.appendChild(self.element);
if(!!self.childData&&self.childData.length>0){
for(var i in self.childData){
params.childData[i].root = params.root;
params.childData[i].parent = self;
self.childNodes.push(new TreeNode(params.childData[i]));
}
}
}
this.expand = function(){
self.title.className=self.root.className[self.nodeType]['expand'];
if(self.childNodes.length>0)
self.childContainer.style.display="block";
}
this.collapse = function(){
self.title.className=self.root.className[self.nodeType]['collapse'];
self.childContainer.style.display="none";
}
this.insertChild = function(params){
if(!params) return null;
self.childNodes.push(new TreeNode(params));
}
this.expandAll = function(){
self.expand();
if(self.childNodes.length>0){
for(var i in self.childNodes){
self.childNodes[i].expandAll();
}
}
}
this.collapseAll = function(){
self.collapse();
if(self.childNodes.length>0){
for(var i in self.childNodes){
self.childNodes[i].collapseAll();
}
}
}
this.initialize();
}
window.onload = function(){
var leftTree = new TreeView({
id:"Tree"+(new Date()).getTime()+Math.random(),
element:document.getElementById('leftTree'),
childData:[
{id:'idx1',title:'Project01',nodeType:'project',childData:[
{id:'idx3',title:'st',nodeType:'folder',childData:[
{id:'idx4',title:'blank.txt',nodeType:'file'}
]}
]},
{id:'idx2',title:'project02',nodeType:'project',childData:[]}
],
className:{
project:{
expand:'project_expand',
collapse:'project_collapse'
},
folder:{
expand:'folder_expand',
collapse:'folder_collapse'
},
file:{
expand:'file_expand',
collapse:'file_collapse'
}
}
});
}
</script>
<div id="leftTree">
</div>
</body>
png ->htm
</html>
- 大小: 7.9 KB
分享到:
相关推荐
在JavaScript中,js tree库能够帮助开发者轻松创建这种视图,用户可以通过展开和折叠节点来探索多层数据。 2. **动态添加节点**: 动态添加节点是指在树结构中运行时添加新元素的能力。这对于响应用户操作或处理...
jsTree 是一个流行的JavaScript库,用于在网页上创建交互式的树状视图。它主要用于组织结构化的数据,如文件系统、数据库目录或自定义项目结构。jsTree 支持多种操作,包括点击、拖放、搜索、上下文菜单以及自定义...
jsTree 是一个流行的JavaScript库,用于创建、操作和展示交互式的HTML树状视图。它提供了一套丰富的API,使得开发者能够方便地实现树形结构的各种功能,如添加、删除、修改节点,以及节点的移动。在本文中,我们将...
jsTree 是一个强大的 JavaScript 库,专用于在 Web 页面上创建交互式的树形结构。它基于纯 JavaScript 编写,无需依赖其他库,因此对于初学者和有经验的开发者来说,都是一个易于理解和使用的工具。通过这个库,你...
在JavaScript中实现树形结构,通常会用到一些库或框架,如jQuery、AngularJS、Vue.js等,但这里提到的"js tree"可能是指一个专门用于构建树形视图的独立库,如jstree(https://www.jstree.com/)。jstree是一个功能...
jsTree是一款基于JavaScript的开源库,主要用于创建、操作和展示HTML页面上的树状结构。它适用于构建复杂的交互式界面,如文件管理系统、组织架构图、导航菜单等。jsTree v.1.0是该库的一个版本,其中文文档为国内...
js Tree是一种基于JavaScript的开源库,用于创建交互式的树状数据结构。它允许用户通过拖放、搜索、展开/折叠节点等功能来操作数据。在移动端,js Tree需要适应更小的屏幕和触摸操作,因此往往需要特别的优化,比如...
jsTree 是一个基于 JavaScript 的开源库,专为创建交互式的树状视图而设计。它提供了丰富的功能,如动态加载、增删节点、拖放操作等,使得在网页中实现复杂的数据结构展示变得简单。jsTree 支持多种数据源,包括 ...
JsTree 是一个基于 JavaScript 的开源库,用于创建交互式的树形数据结构。这个强大的工具适用于多种用途,包括文件管理、菜单系统、数据可视化等。它提供了丰富的功能,如多选、拖放、搜索、加载异步数据等,同时...
**JSTree:高效处理大数据量的JavaScript树形菜单组件** 在Web开发中,树形菜单是一种常见的数据展示形式,用于组织和展示层次结构的数据。JSTree是一款基于JavaScript的开源库,专为构建功能丰富的交互式树形菜单...
jsTree是一款基于JavaScript的开源库,专门用于构建交互式的树形视图。在网页开发中,树形结构常用于展示层级关系的数据,如目录、组织结构或导航菜单等。jsTree提供了丰富的API和可定制的主题,使得开发者能够轻松...
**jstree.min.js** 是一个基于 jQuery 的交互式树形视图插件,它允许在网页中创建和管理结构化的目录或数据展示。这款插件以其轻量级、高度可定制和易于使用的特性而受到开发者们的欢迎。下面将详细介绍 jstree 的...
3. **丰富的API**:jsTree提供了详尽的API,包括事件监听、节点操作、状态管理等,使得在JavaScript中对树结构的操作变得简单易行。 4. **多主题支持**:jsTree内置了多种预设主题,同时也允许开发者自定义主题,以...
jsTree是一款完全用JavaScript编写的开源库,专为实现跨浏览器的树状视图而设计。它在Web应用中扮演着目录树控件的角色,允许用户以树形结构展示数据,极大地提高了用户体验。jsTree支持多种操作,如节点的展开、...
jstree是一个流行的JavaScript库,专门用于在前端创建交互式的树形结构。它适用于构建诸如文件浏览器、组织架构图或层级菜单等应用。这个中文文档详细介绍了jstree的核心功能和API,使得开发者能更容易地理解和使用...
jsTree 是一个流行的 JavaScript 库,用于创建交互式的树状视图。它提供了丰富的功能,如节点的拖放、搜索、上下文菜单等,广泛应用于网站的导航菜单、文件管理器、数据结构展示等领域。在 Java 开发中,jsTree 可以...
JsTree 是一个强大的JavaScript库,专为构建交互式的树状视图而设计。它在Web开发中广泛应用于文件管理、菜单系统、组织结构展示等多种场景。JsTree 提供了丰富的功能,如动态加载、节点重命名、拖放操作等,而且...
jsTree是一款高度可定制的JavaScript库,专注于构建交互式的树形结构。它完全基于jQuery,因此能够无缝地融入任何已使用jQuery的项目中,同时支持所有主流浏览器,包括Chrome、Firefox、Safari、Edge和Internet ...
JsTree是一款基于JavaScript的开源库,专门用于创建、操作和展示树状数据结构。它在Web应用中广泛用于构建可交互的目录结构、文件管理系统或者组织复杂的分类信息。本篇文章将深入探讨如何使用JsTree创建一个静态的...
jsTree 是一个流行的 JavaScript 库,专门用于在 Web 应用程序中创建交互式树形视图。它提供了一个强大的工具集,帮助开发者构建功能丰富的数据展示和操作界面,适用于组织结构、文件系统、菜单等场景。在本篇文章中...