`
idealab
  • 浏览: 198743 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Javascript实现树结构,欢迎拍砖

    博客分类:
  • Ajax
阅读更多
近日写一个文章检索系统,需要用到一个树来动态显示数据库中存储的文章类别,于是自己操刀用JS编写。虽然实现了预期功能,但代码结构和实现逻辑(或说设计思路)并不是很理想,希望各位能够给些建议,谢谢!

先看下效果:


从数据库获取文章类别的代码如下:
<dl class="nav3-grid">
    <%
        CategoryDao dao = (CategoryDao)DaoConfig.getDaoManager().getDao(CategoryDao.class);
        List<Category> categoryList = dao.getAll();
        if(categoryList != null && categoryList.size() != 0){
        	for(Category category : categoryList){//The first tier
        		if(category.getParentId() == 0){
					%><dt><a href="#" onclick="displayChildren(this)"><%=category.getCategoryName() %></a></dt><%
					List<Category> children = dao.getChildren(category.getCategoryId());
					if(children != null && children.size() != 0){
						for(Category child : children){//The second tier
						%><dd style="display:none"><a href="#" onclick="displayChildren(this)"><%=child.getCategoryName() %></a></dd><%
							List<Category> grandson = dao.getChildren(child.getCategoryId());
							if(grandson != null && grandson.size() != 0){
								for(Category cate : grandson){//The third tier
									%><dd class="third" style="display:none"><a href="getPapersByCategory.action?id=<%=cate.getCategoryId() %>"><%=cate.getCategoryName() %></a></dd><%
								}
							}
						}
					}
        		}
        	}
        }
    %>
</dl>


控制树展开和收缩动作的JS代码:
function displayChildren(category){
		var tag = category.parentNode.tagName;
		if(tag == 'DT'){//when click the first tier
			var nextNode = category.parentNode.nextSibling;
			while(nextNode.nodeName == 'DD' && nextNode.className == ''){
				if(nextNode.style.display == 'block'){
					nextNode.style.display = 'none';
					var nextSibl = nextNode.nextSibling;
					while(nextSibl.className == 'third'){
						nextSibl.style.display = 'none';
						nextSibl = nextSibl.nextSibling;
					}
				}
				else nextNode.style.display = 'block';
				nextNode = nextNode.nextSibling;
			}
		}else if(tag == 'DD'){//when click the second tier
			var nextNodeDD = category.parentNode.nextSibling;
			while((nextNodeDD.nodeName == 'DD') && (nextNodeDD.className == 'third')){
				if(nextNodeDD.style.display == 'block')
					nextNodeDD.style.display = 'none';
				else nextNodeDD.style.display = 'block';
				nextNodeDD = nextNodeDD.nextSibling;
			}
		}
 	}
  • 大小: 9.7 KB
分享到:
评论

相关推荐

    JavaScript实现树形菜单

    JavaScript是一种广泛应用于网页和...综上所述,JavaScript实现树形菜单需要理解数据结构、DOM操作、事件处理和性能优化等多个方面的知识。通过不断实践和学习,你可以创建出功能强大且用户体验良好的树形菜单组件。

    JavaScript树\利用JavaScript实现树型结构的TreeView类

    ### JavaScript树:利用JavaScript实现树型结构的TreeView类 在现代Web开发中,树形结构是一种常见的数据组织方式,尤其适用于表示具有层级关系的数据集合,如文件系统、组织架构图等。利用JavaScript来构建这样的...

    javascript实现的目录树

    在本项目中,“javascript实现的目录树”是指利用JavaScript技术构建的一种可视化数据结构,通常用于展示文件系统或者网站的层级结构。这种目录树可以以节点的形式表示各个目录和文件,用户可以通过点击节点来展开、...

    JavaScript实现文档结构图

    JavaScript实现文档结构图! 值得下载看看!资源免费,大家分享!!

    javascript 实现的导航树

    总的来说,使用JavaScript实现导航树需要理解DOM操作、事件处理、CSS样式和数据结构等基础知识,同时还要考虑性能和兼容性问题。通过这种方式,我们可以为用户提供交互性强、易于导航的界面,提高网站的用户体验。

    javascript树形结构控件

    下面将详细讨论JavaScript实现树形结构控件的关键技术和相关知识点。 1. **DOM操作**: - 树形结构控件的构建离不开DOM(文档对象模型)操作。JavaScript需要动态地创建、修改和删除DOM元素,以反映树结构的增删改...

    树结构 复选框 多选 全选功能

    通过学习和理解这些代码,开发者可以掌握如何在实际项目中实现树结构的复选框多选全选功能。 总之,理解和实现"树结构 复选框 多选 全选功能"是提升前端开发技能的重要一环。它要求开发者具备数据结构知识、事件...

    JavaScript实现数据结构

    本主题主要围绕JavaScript实现常见数据结构进行详细探讨。 首先,我们来了解一些基本的数据结构类型: 1. 数组(Array):JavaScript中的数组是最常用的数据结构之一,它可以存储多个元素,并通过索引来访问。数组...

    基于JavaScript实现的在线数据结构演示系统源码.zip

    基于JavaScript实现的在线数据结构演示系统源码.zip基于JavaScript实现的在线数据结构演示系统源码.zip基于JavaScript实现的在线数据结构演示系统源码.zip基于JavaScript实现的在线数据结构演示系统源码.zip基于...

    javascript实现动态树例子

    总的来说,使用JavaScript实现动态树涉及的主要知识点包括:对象和类的使用、树数据结构的理解、DOM操作、事件处理和可能的异步编程。通过实践这样的例子,开发者可以加深对JavaScript特性和数据可视化原理的理解,...

    javascript实现树形选项菜单

    JavaScript实现的树形选项菜单是一种常见的用户界面元素,尤其在数据层级结构复杂的应用场景中,如文件管理系统、组织架构展示或导航菜单等。通过JavaScript,我们可以动态地创建、展开和折叠菜单项,提供用户友好的...

    javascript-Trees树结构.rar

    javascript-Trees树结构.rar

    js实现树形结构,功能非常强大,而调用又非常简单

    本知识点将深入探讨如何使用JavaScript实现树形结构,并提供相关资源。 树形结构是一种数据结构,它表示了对象之间的层次关系。每个节点(或元素)可以有零个或多个子节点,而根节点没有父节点。JavaScript中的树形...

    树形结构生成javaScript

    本主题主要关注如何在JavaScript中生成和操作树形结构。以下是一些关键知识点: 1. **定义节点对象**:在JavaScript中,树的每个元素通常表示为一个对象,包含数据以及指向子节点的引用。例如: ```javascript ...

    使用jsTree实现js树形结构

    jsTree 是一个强大且灵活的前端库,可以帮助你快速实现交互式的树形结构。通过深入学习其配置选项、事件、插件和 API,你可以创建出满足各种需求的树形视图。无论你是新手还是经验丰富的开发者,jsTree 都能提供简洁...

    树形菜单(javascript实现)

    树形菜单(javascript实现)树形菜单(javascript实现)树形菜单(javascript实现)树形菜单(javascript实现)树形菜单(javascript实现)树形菜单(javascript实现)树形菜单(javascript实现)树形菜单...

    java构造多级树结构,支持多根节点

    这里我们讨论如何在Java中实现一个支持多根节点的树结构,并使用ZTree(一种流行的JavaScript库)进行展示。首先,我们需要理解树的基本概念。 **树结构基础** 树是一种非线性数据结构,由节点和边组成。每个节点...

    树形结构javascript代码

    在本主题中,我们将深入探讨如何使用JavaScript实现树形结构,特别是与"dtree"相关的实现。 首先,树形结构的基本元素是节点(Node),每个节点可以包含一个值和若干子节点。在JavaScript中,我们可以创建一个Node...

    JS+jquery实现动态树结构

    本篇文章将深入探讨如何使用JS和jQuery来实现动态树结构,并基于提供的文件`jzaefferer-jquery-treeview-3937863`进行讲解。 首先,我们需要了解jQuery Treeview插件,这是一个由Jörn Zaefferer开发的jQuery扩展,...

    JS实现树形结构.rar

    在JavaScript中,实现树形结构是一项常见的任务,特别是在前端开发中,例如构建文件系统、组织菜单、展现数据层级等。树形结构是一种数据结构,它由节点(或称为元素)组成,每个节点可以有零个或多个子节点,形成一...

Global site tag (gtag.js) - Google Analytics