`

JS写的一个简单的JavaScript树

    博客分类:
  • JS
阅读更多

先看下效果

 

 

下面就是JS代码
function clickHandler()
{
	//定义需要操作的XHTML元素id
	var targetId;
	//定义需要被操作的XHTML元素
	var targetElement;
	//定触发事件的事件源(其中event是隐式可用的全局对象)
	var srcElement = event.srcElement;
	//根据其className属性值判断它不是叶子节点,即该节点可以展开
	if (srcElement.className.substr(0,7) == "outline")
	{
		//如果事件源是树节点前的图片
		if (srcElement.id.indexOf("Image") > 0)
		{
			//获取该节点对应<div.../>元素的id
			targetId = srcElement.id.substring(0
				, srcElement.id.length - 5)	+ "Details";
		}
		//如果事件源是树节点所在的<div.../>元素
		else
		{
			//获取该节点对应<div.../>元素的id
			targetId = srcElement.id + "Details";
		}
		//找到对应的<div.../>元素
		targetElement = document.getElementById(targetId);
		//如果targetElement对象存在
		if (targetElement)
		{
			//如果该<div.../>元素处于“隐藏”状态
			if (targetElement.style.display == "none")
			{
				//显示该<div.../>元素
				targetElement.style.display = "";
			}
			else
			{
				//否则,隐藏该<div.../>元素
				targetElement.style.display = "none";
			}
		}
		//如果事件源是树节点前的图片
		if (srcElement.id.indexOf("Image") > 0)
		{
			
			//获取该节点前的<img.../>元素的id
			targetId = srcElement.id;
		}
		//如果事件源是树节点所在的<div.../>元素
		else
		{
			//获取该节点前的<img.../>元素的id
			targetId = srcElement.id + "Image";
		}
		//找到对应的<img.../>元素
		targetElement = document.getElementById(targetId);
		//如果该<img.../>元素中显示的图片是“加号”图片
		if (targetElement.src.indexOf("plus") >= 0)
		{
			//将<img.../>的“加号”图片换为“减号”图片
			targetElement.src = "image/minus.gif";
		}
		else
		{
			//否则,将<img.../>的“减号”图片换为“加号”图片
			targetElement.src = "image/plus.gif";
		}
	}
}
//为页面文档的onclick事件绑定事件处理函数
document.onclick = clickHandler;

html代码

<!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>
		<title>JavaScript树</title>
		<meta name="author" content="Yeeku.H.Lee" />
		<meta name="website" content="http://www.crazyit.org" />
		<meta http-equiv="Content-Type" content="text/html; charset=GBK" />
		<style type="text/css">
/* 控制根节点的CSS样式定义 */
.outline {
	font-size: 9pt;
	margin-left: 15pt;
	text-indent: -28pt;
	cursor: hand;
	text-decoration: none
}

/* 控制第一级子节点的CSS样式定义 */
.outline1 {
	font-size: 9pt;
	margin-left: 24pt;
	text-indent: -36pt;
	cursor: hand;
	text-decoration: none
}

/* 控制第二级子节点的CSS样式定义 */
.outline11 {
	font-size: 9pt;
	margin-left: 38pt;
	text-indent: -50pt;
	cursor: hand;
	text-decoration: none
}

/* 控制根节点下叶子节点的CSS样式定义 */
.passage0 {
	font-size: 9pt;
	margin-left: 15pt;
	text-indent: -28pt;
	text-decoration: none
}

/* 控制第一级节点下叶子节点的CSS样式定义 */
.passage1 {
	font-size: 9pt;
	margin-left: 24pt;
	text-indent: -36pt;
	text-decoration: none
}

/* 控制第二级节点下叶子节点的CSS样式定义 */
.passage11 {
	font-size: 9pt;
	margin-left: 38pt;
	text-indent: -50pt;
	text-decoration: none
}
</style>
		<script type="text/javascript" src="tree.js">
	
</script>
	</head>
	<body>
		<div id="root" class="outline">
			<img id="rootImage" class="outline" alt="rootImage"
				src="image/plus.gif" />
			我的电脑
		</div>
		<div id="rootDetails" style="display: none">
			<div id="child1" class="outline1">
				<img id="child1Image" class="outline1" alt="child1Image"
					src="image/plus.gif" />
				本地磁盘 C:
			</div>
			<div id="child1Details" style="display: none">
				<div class="passage11">
					<img class="passage11" src="image/passage.gif" />
					文件一
				</div>
				<div class="passage11">
					<img class="passage11" src="image/passage.gif" />
					文件二
				</div>
			</div>
			<div id="child2" class="outline1">
				<img id="child2Image" class="outline1" alt="child2Image"
					src="image/plus.gif" />
				本地磁盘 D:
			</div>
			<div id="child2Details" style="display: none">
				<div class="passage11">
					<img class="passage11" src="image/passage.gif" />
					文件三
				</div>
				<div class="passage11">
					<img class="passage11" src="image/passage.gif" />
					文件四
				</div>
			</div>
			<div id="child3" class="outline1">
				<img id="child3Image" class="outline1" alt="child3Image"
					src="image/plus.gif" />
				本地磁盘 E:
			</div>
			<div id="child3Details" style="display: none">
				<div class="passage11">
					<img class="passage11" src="image/passage.gif" />
					文件五
				</div>
				<div class="passage11">
					<img class="passage11" src="image/passage.gif" />
					文件六
				</div>
			</div>
			<div class="passage1">
				<img class="passage1" src="image/passage.gif" />
				文件七
			</div>
		</div>
	</body>
</html>

  

  • 大小: 14.5 KB
分享到:
评论

相关推荐

    javascript写的树

    以上代码创建了一个基本的JavaScript树形结构,具有展开和折叠功能。当然,这只是一个基础示例,实际项目中可能需要添加更多功能,如搜索、排序、拖放等。此外,还可以考虑使用现有库,如d3.js、jQuery UI Treeview...

    简单的树目录,javascript写的

    第一次接触树目录时理解的一个html文件,javascript写的,超简单

    js,javascript写的一个下拉框和下拉树带滚动条

    在JavaScript和jQuery的世界里,创建一个带有滚动条的下拉框和下拉树是一项常见的任务,特别是在构建交互式用户界面时。下拉框通常用于提供一组可选的选项,而下拉树则更进一步,它以层级结构展示数据,允许用户以...

    一个用JS写的很好用的树

    "一个用JS写的很好用的树"这个标题表明我们有一个专门用JavaScript编写的树形组件,它可能是一个库或框架,用于帮助开发者在网页上创建和管理树形结构。这样的组件通常会提供API来创建节点、添加子节点、删除节点、...

    带复选框JS树 Javascript树 JS树 树形菜单

    JavaScript树形菜单是一种在网页中实现层次结构数据展示的交互方式,它通常用于导航、文件管理、选项配置等场景。"带复选框"的JS树形菜单则更进一步,允许用户通过勾选复选框来选择或操作树节点,为用户提供了一种...

    javascript jquery 写的树形菜单

    jQuery 是一个 JavaScript 库,它简化了 DOM 操作、事件处理、动画设计以及 AJAX 交互。在这个场景中,我们讨论的是使用 JavaScript 和 jQuery 实现的树形菜单。 树形菜单是一种常见的用户界面元素,它通常用于展示...

    JavaScript写的树形展示

    一个简单的实现方式是创建一个JavaScript对象,其中包含节点的值、子节点数组和其他属性(如ID、父节点等)。 ```javascript function TreeNode(value) { this.value = value; this.children = []; } ``` 2. **...

    javascript实现的目录树

    总的来说,创建一个JavaScript实现的目录树涉及数据结构设计、HTML和CSS渲染、事件处理、性能优化以及可访问性等多个方面。通过学习和实践这些技术,开发者可以构建出功能强大且美观的目录树视图,适用于各种应用...

    javascript写3D的圣诞树javascript写3D的圣诞树

    本篇文章将深入探讨如何使用JavaScript来创建一个立体生动的3D圣诞树。 首先,要构建3D圣诞树,我们需要了解基本的3D图形学概念,如向量、矩阵变换和透视投影。在JavaScript中,我们可以使用Three.js这样的库来简化...

    javascript写的一个功能齐备的树控件treeview

    javascript写的一个功能齐备的树控件treeviewjavascript写的一个功能齐备的树控件treeviewjavascript写的一个功能齐备的树控件treeviewjavascript写的一个功能齐备的树控件treeview

    javascript 树

    用javascript写的树形结构用javascript写的树形结构用javascript写的树形结构用javascript写的树形结构用javascript写的树形结构用javascript写的树形结构

    超级简单的javascript树

    例如,一个简单的树节点定义可能如下所示: ```javascript function TreeNode(value) { this.value = value; this.children = []; this.parent = null; } ``` 要创建一个树,我们需要实例化TreeNode对象,并...

    JS写的一个无限分级树

    "JS写的一个无限分级树"就是一个利用JavaScript实现的可以无限扩展层级的树结构组件。这种组件通常用于展示具有层级关系的数据,并提供交互功能,如展开/折叠节点、搜索、拖放等。 首先,我们需要理解树的基本概念...

    使用jsTree实现js树形结构

    jsTree 是一个强大的 JavaScript 库,专用于在 Web 页面上创建交互式的树形结构。它基于纯 JavaScript 编写,无需依赖其他库,因此对于初学者和有经验的开发者来说,都是一个易于理解和使用的工具。通过这个库,你...

    JavaScript 树形菜单

    一个简单的树形菜单由`&lt;ul&gt;`和`&lt;li&gt;`元素构成,其中`&lt;li&gt;`元素代表菜单节点,而子节点则嵌套在父节点的`&lt;ul&gt;`中。例如: ```html 节点1 子节点1.1 子节点1.2 节点2 节点3 ``` 接下来,我们需要用...

    javaScript实现树形结构

    创建一个JavaScript对象来表示树节点,通常包括`value`(节点值)、`children`(子节点数组)等属性。例如: ```javascript function TreeNode(value) { this.value = value; this.children = []; } ``` 2. ...

    一个简单的JS树形菜单

    在本文中,我们将深入探讨如何使用JavaScript(JS)和jQuery_z_tree库来创建一个简单的树形菜单。这个菜单是基于SimpleTree1.3的JS思想,它极大地简化了前端开发人员的工作,使得创建动态、交互式的树状结构变得更加...

    jstree,javascript树形控件

    总之,`jstree` 是一个强大且灵活的 JavaScript 树形控件,能够满足各种树状结构的展示需求。通过深入了解其核心特性和用法,开发者可以轻松地将其集成到项目中,提升用户体验。同时,遵循最佳实践,可以确保项目的...

    javascript 树形控件

    JavaScript树形控件是一种在网页中用于展示层次结构数据的交互式组件,它通常以节点的形式呈现,每个节点可以展开或折叠,...通过查看和理解这些文件,我们可以学习到如何构建和使用一个自定义的JavaScript树形控件。

    js做的简单树 js做的树

    本文将详细讲解如何使用JavaScript和HTML(通过div元素)来创建一个简单的树形结构。 首先,我们需要理解树的基本概念。在计算机科学中,树是一种非线性的数据结构,由节点(或称为顶点)和连接这些节点的边组成。...

Global site tag (gtag.js) - Google Analytics