近日写一个文章检索系统,需要用到一个树来动态显示数据库中存储的文章类别,于是自己操刀用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实现树形菜单需要理解数据结构、DOM操作、事件处理和性能优化等多个方面的知识。通过不断实践和学习,你可以创建出功能强大且用户体验良好的树形菜单组件。
### JavaScript树:利用JavaScript实现树型结构的TreeView类 在现代Web开发中,树形结构是一种常见的数据组织方式,尤其适用于表示具有层级关系的数据集合,如文件系统、组织架构图等。利用JavaScript来构建这样的...
在本项目中,“javascript实现的目录树”是指利用JavaScript技术构建的一种可视化数据结构,通常用于展示文件系统或者网站的层级结构。这种目录树可以以节点的形式表示各个目录和文件,用户可以通过点击节点来展开、...
JavaScript实现文档结构图! 值得下载看看!资源免费,大家分享!!
通过学习和理解这些代码,开发者可以掌握如何在实际项目中实现树结构的复选框多选全选功能。 总之,理解和实现"树结构 复选框 多选 全选功能"是提升前端开发技能的重要一环。它要求开发者具备数据结构知识、事件...
总的来说,使用JavaScript实现动态树涉及的主要知识点包括:对象和类的使用、树数据结构的理解、DOM操作、事件处理和可能的异步编程。通过实践这样的例子,开发者可以加深对JavaScript特性和数据可视化原理的理解,...
JavaScript实现的树形选项菜单是一种常见的用户界面元素,尤其在数据层级结构复杂的应用场景中,如文件管理系统、组织架构展示或导航菜单等。通过JavaScript,我们可以动态地创建、展开和折叠菜单项,提供用户友好的...
javascript-Trees树结构.rar
本知识点将深入探讨如何使用JavaScript实现树形结构,并提供相关资源。 树形结构是一种数据结构,它表示了对象之间的层次关系。每个节点(或元素)可以有零个或多个子节点,而根节点没有父节点。JavaScript中的树形...
本主题主要关注如何在JavaScript中生成和操作树形结构。以下是一些关键知识点: 1. **定义节点对象**:在JavaScript中,树的每个元素通常表示为一个对象,包含数据以及指向子节点的引用。例如: ```javascript ...
jsTree 是一个强大且灵活的前端库,可以帮助你快速实现交互式的树形结构。通过深入学习其配置选项、事件、插件和 API,你可以创建出满足各种需求的树形视图。无论你是新手还是经验丰富的开发者,jsTree 都能提供简洁...
在JavaScript中,实现树形结构是一项常见的任务,特别是在前端开发中,例如构建文件系统、组织菜单、展现数据层级等。树形结构是一种数据结构,它由节点(或称为元素)组成,每个节点可以有零个或多个子节点,形成一...
在JavaScript编程中,构建多级静态树是一种常见的需求,它...总的来说,JavaScript实现多级静态树主要涉及数据结构的设计、递归操作以及遍历算法。通过理解这些核心概念,开发者可以有效地处理各种需要树形结构的场景。
用javascript写的树形结构用javascript写的树形结构用javascript写的树形结构用javascript写的树形结构用javascript写的树形结构用javascript写的树形结构
总结,构建Bootstrap的树结构主要涉及HTML结构设计、CSS样式设置和JavaScript交互实现。在实际项目中,可以结合Java后端服务,利用API接口进行数据交换。通过学习和理解这些技术,我们可以创建出既美观又实用的树状...
JavaScript通过对数据进行数据转换实现二叉树。数据结构如下:let data = [ { id: 1, name: "目录1", parentId: 0, }, { id: 2, name: "目录1-1", parentId: 1, }]
- 实现dtree时,首先需要将数据转换为dTree可识别的格式,然后在HTML中嵌入必要的结构,最后通过JavaScript初始化和操作树。 3. **前端技术栈** - HTML:用于创建基本的DOM结构,如`<ul>`和`<li>`标签来表示树的...
本文介绍了如何使用JavaScript实现一个简单的树形菜单效果,通过这个实例,我们可以学习到如何操作DOM、如何通过JavaScript控制样式的变化,以及如何实现一个基本的交互式菜单。 首先,我们需要了解HTML结构。从给...
要使用JavaScript实现树结构,我们可以定义一个`Node`类,包含`value`(节点值)、`children`(子节点数组)等属性,并提供`addChild`、`removeChild`、`findNode`等方法来操作树。 ```javascript class Node { ...
在ASP中实现动态树结构目录,首先需要一个数据库来存储目录信息。通常会用到SQL Server、MySQL或Access等关系型数据库管理系统。在这个案例中,数据库可能包含了各个目录节点的ID、父节点ID、节点名称等字段,通过...