近日写一个文章检索系统,需要用到一个树来动态显示数据库中存储的文章类别,于是自己操刀用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实现树型结构的TreeView类JavaScript树\利用JavaScript实现树型结构的TreeView类JavaScript树\利用JavaScript实现树型结构的TreeView类JavaScript树\利用JavaScript实现树型结构的...
javascript 实现树.html javascript 实现树.html
JavaScript实现树形菜单源码以及使用说明
这是一个通过JavaScript实现的Java树形结构,传上来以后用的时候方便
JavaScript实现文档结构图! 值得下载看看!资源免费,大家分享!!
树形结构生成javaScript 树形结构生成javaScript 树形结构生成javaScript
一个用javascript实现的非常漂亮的目录树
javaScript实现树形结构 带实例说明
Javascript树结构
一个很好的使用Java语言,结合JavaScript来实现的网页模式的树形结构,其表现实行良好,类似xp系统资源管理器。
基于JavaScript实现的在线数据结构演示系统源码.zip基于JavaScript实现的在线数据结构演示系统源码.zip基于JavaScript实现的在线数据结构演示系统源码.zip基于JavaScript实现的在线数据结构演示系统源码.zip基于...
用Javascript实现一颗树状结构的展现,并且对单击或者双击做出相应的反应
vue Element-ui表格实现树形结构表格 本文实例为大家分享了Element-ui表格实现树形结构表格的具体代码,供大家参考,具体内容如下 前端效果展示: 在el-table中,支持树类型的数据的显示。当 row 中包含 ...
树形菜单(javascript实现)树形菜单(javascript实现)树形菜单(javascript实现)树形菜单(javascript实现)树形菜单(javascript实现)树形菜单(javascript实现)树形菜单(javascript实现)树形菜单...
javascript实现多级静态树例子
javascript树形结构控件,希望对大家能有所帮助
javascript写3D的圣诞树javascript写3D的圣诞树javascript写3D的圣诞树javascript写3D的圣诞树javascript写3D的圣诞树
javascript实现动态树例子
vued3treeVUE实现自定义节点的树结构