`

JS组件--Tree

阅读更多
function MyTree(cnt) {
	this.imgPath = "images/treeimg/";
	this.setRoot(new Node(-1, "root", ""));
	cnt = document.getElementById(cnt);
	//cnt.style.width = 210;
	//cnt.style.height = 350;
	cnt.style.fontSize = "12px";
	//cnt.style.borderStyle = "solid";
	//cnt.style.borderColor = "#ccc";
	//cnt.style.borderWidth = "1px 1px 1px 1px";
	//cnt.style.overflowY = "scroll";
	this.container = cnt;
}


MyTree.prototype = {
	setRoot:function (root) {
		this.root = root;
		this.root.icon = this.imgPath + "base.gif";
	}, 
	render:function () {
		this.root.render();
		this.container.appendChild(this.root.box);
		var ns = this.root.child;
		for (var k = 0; k < ns.length; k++) {
			ns[k].render();
			this.container.appendChild(ns[k].box);
			this.container.appendChild(ns[k].subbox);
		}
	}
};

function Node(id, text, href) {
	this.imgPath = "images/treeimg/";
	this.target = "cntFrm";
	this.child = [];
	this.id = id;
	this.text = text;
	this.icon = this.imgPath + "file.gif";
	this.href = href;
	this.leaf = true;
	this.last = true;
	this.parent = null;
	this.level = 0;
	this.box = document.createElement("div");
	this.subbox = document.createElement("div");
	this.state = 1;
}

Node.prototype = {
	render : function () {
		this.setIndent();
		this.setIcon();
		//this.setChk();
		this.setText();
	},
	add : function (id, text, icon, href) {
		var node = new Node(id, text, icon, href);
		this.leaf = false;
		this.icon = this.imgPath + "foldericon.gif";
		node.parent = this;
		if (node.parent.child.length != 0) {
			node.parent.child[node.parent.child.length - 1].last = false;
		}
		node.level = this.level + 1;
		this.child.push(node);
		return node;
	},
	getNoLineNum : function () {
		var count = 0;
		var p = this.parent;
		while (p && p.last) {
			count++;
			p = p.parent;
		}
		return count;
	},
	setIcon : function () {
		var icon = document.createElement("image");
		icon.setAttribute("align", "top");
		icon.src = this.icon;
		this.box.appendChild(icon);
	},
	setText : function () {
		var span = document.createElement("span");
		var text = document.createTextNode(this.text);
		if (this.leaf) {
			var href = this.href;
			span.attachEvent("onclick", function (e) {
				var sender = window.event.srcElement;
				Ajax(href, null, function(res){
					//var div = document.getElementById("mm");
					//mm.innerHTML = res.responseText;
				});
			});
		}
		span.appendChild(text);
		this.box.appendChild(span);
	},
	setChk : function () {
		var chk = document.createElement("input");
		chk.setAttribute("type", "checkbox");
		chk.style.margin = '0 0 0 0';
		this.box.appendChild(chk);
	},
	getPM : function () {
		var pm = "L1.gif";
		if (this.leaf) {
			pm = this.last ? "L1.gif" : "T1.gif";
		} else {
			if (this.state == 0) {
				if (this.last) {
					pm = "Lplus1.gif";
				} else {
					pm = "Tplus1.gif";
				}
			} else {
				if (this.last) {
					pm = "Lminus1.gif";
				} else {
					pm = "Tminus1.gif";
				}
			}
		}
		return pm;
	},
	setIndent : function () {
		var count = this.getNoLineNum();
		var indent = document.createElement("span");
		for (var i = 1; i <= this.level; i++) {
			var blank = document.createElement("span");
			blank.style.width = 18;
			if (i > 1 && i <= this.level - count) {
				blank.style.backgroundImage = "url(" + this.imgPath + "I1.gif)";
			}
			indent.appendChild(blank);
		}
		if (this.level > 0) {
			var t = document.createElement("image");
			t.setAttribute("align", "top");
			t.setAttribute("id", "img" + this.id);
			t.src = this.imgPath + this.getPM();
			var kk = this;
			var cs = kk.child;
			for (var k = 0; k < cs.length; k++) {
				cs[k].render();
				kk.subbox.appendChild(cs[k].box);
				kk.subbox.appendChild(cs[k].subbox);
			}
			kk.subbox.style.display = (this.state==0)?"none":"block";
			t.attachEvent("onclick", function (e) {
				var sender = window.event.srcElement;
				if (kk.state == 0) {
					kk.state = 1;
					sender.src = kk.imgPath + kk.getPM();
					kk.subbox.style.display = "block";
				} else {
					kk.state = 0;
					sender.src = kk.imgPath + kk.getPM();
					kk.subbox.style.display = "none";
				}
			});
			indent.appendChild(t);
		}
		this.box.appendChild(indent);
	}
};

 

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    el-tree-selected-tree

    在`src`目录下,我们可能找到一个或多个Vue组件,比如一个名为`SelectedTree.vue`的组件,它是`el-tree-selected-tree`的具体实现。这个组件可能包含两个`el-tree`实例,一个用于主树,另一个用于显示选中节点。通过...

    基于iView和he-tree-vue的一个拖拽树形组件

    "基于iView和he-tree-vue的一个拖拽树形组件"是这样的一个实用工具,它结合了两个流行的Vue.js库的功能,为开发者提供了一个强大且灵活的树形组件。这个组件不仅具备基本的树形展示能力,还包含了丰富的交互特性,如...

    liquor-tree:基于Vue.js的树组件liquor-tree-master

    liquor-tree:基于Vue.js的树组件liquor-tree-master

    vue el-tree 默认展开第一个节点的实现代码

    9. 实际效果与应用:上述代码和方法的实现可以让开发者在使用Vue.js和Element UI开发项目时,快速实现el-tree组件默认展开第一层的第一个节点的功能。 总结:本文通过实例代码详细介绍了在Vue.js框架中,如何结合...

    zm-tree-org:一个简易版组织架构图,组件依赖于vue-org-tree, 在此基础上将部分源代码进行优化修改。支持鼠标拖动,鼠标滚轮缩放,节点拖拽

    zm-tree-org介绍一个简易版组织架构图,组件依赖于vue-org-tree, 在此基础上将部分源代码进行优化修改。可鼠标拖动拖拽,以及鼠标滚轮缩放,并且支持拖动节点改变树结构。安装npm install zm-tree-org --save# or ...

    vue-table-with-tree-grid:用于Vue.js 2.0的表(带有tree-grid)组件。 (其样式扩展了@iView)

    Vue.js 2.0的表格(带有树网格)组件。 (其样式扩展了 ) 例 安装 使用npm: npm i vue-table-with-tree-grid -S 或使用纱线: yarn add vue-table-with-tree-grid 用法 import Vue from 'vue' import ZkTable ...

    el-tree创建结构线,并且可拖动

    el-tree创建结构线,并且可拖动

    vue-tree:基于Vue.js 2.0的树和多选组件vue-tree-master

    vue-tree:基于Vue.js 2.0的树和多选组件vue-tree-master

    vue-json-tree-view:Vue.js的JSON树视图组件

    安装使用npm安装插件: npm install --save vue-json-tree-view 然后,在您的Application JavaScript中,添加: import TreeView from "vue-json-tree-view"Vue . use ( TreeView ) 做完了用法将tree-view元素放到...

    vue-tree-color-master.zip

    &lt;vue-tree-color :data="treeData" :color="nodeColor"&gt;&lt;/vue-tree-color&gt; ``` 5. **配置样式**:根据需要,你可能需要在你的项目样式中覆盖或扩展 Vue Tree Color 的默认样式。 6. **监听事件**:Vue Tree ...

    vue-json-tree-view-master.zip

    Vue.js是一个轻量级的前端JavaScript框架,它以数据驱动和组件化的思想为核心。Vue JSON Tree View是基于这个框架构建的,因此在使用该插件前,需要对Vue的基本概念、组件系统和指令有基本了解。 2. **JSON数据...

    vue-tree-master.zip

    总的来说,"vue-tree-master.zip"这个项目涵盖了Vue.js和Element UI的实践应用,特别是el-tree组件的深度定制,对于提升前端开发者在Vue生态中的实战能力具有很高的价值。通过研究这个项目,你可以更深入地理解前端...

    Vue-Tree-Chart.zip

    Vue Tree Chart是一个基于Vue.js框架的组件,用于创建和展示数据的树状结构,尤其适合构建组织架构图。这个项目包含了一系列配置文件和必要的依赖,使得开发者能够方便地在自己的前端应用中集成并自定义这个树形图表...

    vuejstree是一个用于Vue20的树形插件

    **Vue.js与Tree组件** Vue.js,由尤雨溪创建,是一种轻量级的前端JavaScript框架,以其简单易用、高效灵活的特点深受开发者喜爱。它采用声明式编程,允许开发者通过模板语法来定义UI,实现了数据和视图的双向绑定,...

    easy-tree-master

    "easy-tree-master" 是一个基于前端技术的项目,主要关注于构建树形结构的数据展示组件。这个项目可能是一个JavaScript库或者框架,专为开发者提供在Web应用中方便地创建和管理树状数据视图的功能。在前端开发中,树...

    v-org-tree.zip

    在`babel.config.js`文件中,开发者可能配置了Babel的规则,使其能够处理`v-org-tree`组件的源码,确保IE11能理解。 2. **polyfills**:由于IE11不支持某些现代JavaScript特性,如Promise、Array.prototype.find等...

    el-tree-select:基于el-select和el-tree改造的树形选择器(下拉框)组件

    "el-tree-select:基于el-select和el-tree改造的树形选择器(下拉框)组件"是一个自定义的前端UI组件,它结合了Element UI库中的el-select和el-tree两个组件的功能,创建了一个适用于数据层级关系展示的选择器。...

    react-org-tree:on基于react的简单组织树组件

    react-org-tree A simple organization tree component based on react If you are using vue, see Installation # use npm npm i react-org-tree # use yarn yarn add react-org-tree Usage import OrgTree from '...

    easyUI-springmvc-tree-demo

    然后在JavaScript中,通过$(selector).tree()方法初始化并配置Tree组件。 二、SpringMVC支持 SpringMVC作为Java Web开发中的主流框架,提供了一套完整的MVC模式实现,可以方便地处理HTTP请求和响应。在与EasyUI ...

    sl-vue-tree-Vue.js的一个简单的可定制的可拖动树组件-Vue.js开发

    本项目“sl-vue-tree”是一个基于Vue.js的可定制化且支持拖动功能的树形组件,适用于各种数据展示和操作场景。下面我们将深入探讨这个组件及其与Vue.js的关系。 首先,Vue.js是一个轻量级的框架,它允许开发者通过...

Global site tag (gtag.js) - Google Analytics