我用js读取数据库生成一个树形目录,树形目录做好了,可是不知道怎么把节点的id传到jsp页面或action里,最好action能通过request.getAttribute()得到所点节点的id,还有就是不知道如何像有些论坛上一个,点不同的节点,右面显示不同的jsp,小弟第一次做,请指教,谢谢,下面是我用的js代码:
var Tree = new function() {
this._url = "tree.jsp"; //用于请求数据的服务器页面地址
this._openMark = "<img src='images/nolines_minus.gif'/>"+"<img src='images/folderopen.gif'/>"; //目录节点处于展开状态时的标识
this._closeMark = "<img src='images/nolines_plus.gif'/>"+"<img src='images/folder.gif'/>"; //目录节点处于关闭状态时的标识
this._itemMark = "<img src='images/page.gif'/>"; //非目录节点标识
this._initId = "treeInit"; //树形目录初始div标识
this._rootData = "IS安全等级保护基础库"; //根节点文字信息
this._boxSuffix = "_childrenBox"; //子节点容器后缀
this._folderType = "folder"; //目录节点类型变量
this._itemType = "item"; //非目录节点类型变量
//初始化根节点
this.init = function() {
var initNode = document.getElementById(this._initId); //获取初始div
var _node = document.createElement("div"); //创建新div作为根节点
_node.id = "1"; //根节点id为0
_node.innerHTML = this.createItemHTML(_node.id, this._folderType, this._rootData);
initNode.appendChild(_node); //将根节点加入初始div
}
//获取给定节点的子节点
this.getChildren = function(_parentId) {
//获取页面子节点容器box
var childBox = document.getElementById(_parentId + this._boxSuffix);
//如果子节点容器已存在则直接设置显示状态,否则从服务器获取子节点信息
if (childBox) {
var isHidden = (childBox.style.display == "none"); //判断当前状态是否隐藏
childBox.style.display = isHidden?"":"none"; //隐藏则显示,如果显示则变为隐藏
//根据子节点的显示状态修改父节点标识
var _parentNode = document.getElementById(_parentId);
_parentNode.firstChild.innerHTML = isHidden?this._openMark:this._closeMark;
} else {
var xmlHttp=this.createXmlHttp(); //创建XmlHttpRequest对象
xmlHttp.onreadystatechange = function() {
if (xmlHttp.readyState == 4) {
//调用addChildren函数生成子节点
Tree.addChildren(_parentId, xmlHttp.responseXML);
}
}
xmlHttp.open("GET", this._url + "?parentId=" + _parentId, true);
xmlHttp.send(null);
}
}
//根据获取的xmlTree信息,设置指定节点的子节点
this.addChildren = function(_parentId, _data) {
var _parentNode = document.getElementById(_parentId); //获取父节点
_parentNode.firstChild.innerHTML = this._openMark; //设置节点前标记为目录展开形式
var _nodeBox = document.createElement("div"); //创建一个容器,称为box,用于存放所有子节点
_nodeBox.id = _parentId + this._boxSuffix; //容器的id规则为:在父节点id后加固定后缀
_nodeBox.className = "box"; //样式名称为box,div.box样式会对此节点生效
_parentNode.appendChild(_nodeBox); //将子节点box放入父节点中
var _children = _data.getElementsByTagName("tree")[0].childNodes; //获取所有item节点
var _child = null; //声明_child变量用于保存每个子节点
var _childType = null; //声明_childType变量用于保存每个子节点类型
for(var i=0; i<_children.length; i++) { //循环创建每个子节点
_child = _children[i];
_node = document.createElement("div"); //每个节点对应一个新div
_node.id = _child.getAttribute("id"); //节点的id值就是获取数据中的id属性值
_childType = _child.getAttribute("isFolder")=="true"?this._folderType:this._itemType; //设置子节点类型
//根据节点类型不同,调用createItemHTML创建节点内容
if (_childType == this._itemType) {
//非目录节点在最后多传一个link数据,用于点击后链接到新页面
_node.innerHTML = this.createItemHTML(_node.id, _childType, _child.firstChild.data, _child.getAttribute("link"));
} else {
//目录节点只需传递id,节点类型,节点数据
_node.innerHTML = this.createItemHTML(_node.id, _childType, _child.firstChild.data);
}
_nodeBox.appendChild(_node); //将创建好的节点加入子节点box中
}
}
//创建节点的页面片断
this.createItemHTML = function(itemId, itemType, itemData, itemLink) {
//根据节点类型不同,返回不同的HTML片断
if (itemType == this._itemType) {
//非目录节点的class属性以item开头,并且onclick事件调用Tree.clickItem函数
return '<span class="itemMark">'+this._itemMark+'</span>' +
'<a href="Frame.do" style="text-decoration:none" target="main"><span class="item" >'
+itemData+'</span></a>';
} else if (itemType == this._folderType) {
//目录节点的class属性以folder开头,并且onclick事件调用Tree.getChildren函数
return '<span class="folderMark" onclick="Tree.getChildren(\'' + itemId + '\')">' + this._closeMark + '</span>' +
'<span class="folder" onclick="Tree.getChildren(\'' + itemId + '\')">' + itemData + '</span>'
}
}
//点击叶子节点后的动作,目前只是弹出对话框,可修改为链接到具体的页面
this.clickItem = function(_link) {
return ;
}
//用于创建XMLHttpRequest对象
this.createXmlHttp=function() {
var xmlHttp = null;
//根据window.XMLHttpRequest对象是否存在使用不同的创建方式
if (window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest(); //FireFox、Opera等浏览器支持的创建方式
} else {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");//IE浏览器支持的创建方式
}
return xmlHttp;
}
}
分享到:
相关推荐
本项目提供的是一款JavaScript版本的树形目录菜单生成器,它可以帮助开发者轻松地将层级结构的数据转化为可视化的菜单界面。 树形菜单是一种以树状结构展现数据的用户界面元素,它模拟了计算机文件系统的目录结构,...
- `appinfolist.jsp`, `statworklist.jsp`: JSP文件,可能用于显示应用程序信息或统计工作列表,其中可能嵌入了JavaScript代码来呈现树形结构。 - `images`: 存储图片资源的目录,可能包含用于表示树形结构的图形...
JavaScript树形目录是一种在网页中组织和展示层级结构数据的有效方式。它通常用于构建导航菜单、文件管理系统或者显示具有层次关系的数据。在这个"javascript树形目录.rar"压缩包中,包含了一些关键文件,如dtree....
通过JavaScript实现树形菜单,可以有效地展示这些层次关系,并提供方便的展开、折叠、选择等功能。 实现JavaScript树形菜单主要涉及以下几个关键技术点: 1. 数据结构设计:首先,我们需要定义一个数据结构来存储...
本文将深入探讨如何在JSP页面中使用JavaScript实现一个超酷的树形菜单,以提供直观且易于操作的导航功能。 首先,让我们了解什么是JSP(JavaServer Pages)。JSP是一种动态网页技术,它允许开发人员在HTML或者XML...
【标题】"jsp实现动态树形菜单"涉及的是在Web开发中使用JSP技术构建一个可以自动生成层次结构的交互式菜单系统。JSP(JavaServer Pages)是Java平台上的服务器端脚本语言,用于创建动态网页。动态树形菜单在网站中常...
在JSP(Java Server Pages)中生成目录树是一个常见的需求,尤其是在处理文件系统或者网站结构时。由于JSP环境中缺少内置的TreeView控件,开发者需要自定义方法来实现这一功能。本文将介绍一种使用递归算法在JSP中...
- 为了提高页面性能,可以使用AJAX技术实现树形目录的异步加载,即只在需要时加载子节点。 - 当用户点击节点时,发送AJAX请求到服务器,服务器返回对应的子节点数据,客户端JavaScript更新DOM。 6. **权限控制与...
"jsp树形菜单"是一种常见的网页元素,用于展示层级关系的数据,如网站导航、文件目录或组织结构。本项目利用JavaServer Pages (JSP) 技术,结合MySQL数据库来创建一个可自定义的树形菜单,而且其代码设计灵活,可以...
JavaBean可以封装目录结构为对象,Servlet则负责根据请求获取数据并传递给JSP页面。JSP页面通过JSTL(JavaServer Pages Standard Tag Library)或者EL(Expression Language)来遍历和展示这些目录对象,形成层次化...
树形控件是一种用户界面元素,它以层级结构展示数据,通常用于导航或目录展示。在JavaScript中,我们可以通过创建DOM元素和事件监听器来实现这一功能。描述中提到的"无刷新展开"指的是利用Ajax技术,即异步...
前端部分,`JavaScript`库如`JSTree`(压缩包中的`JSTREE`可能就是这个库的文件)提供了丰富的API和插件,使得在浏览器中生成和操作树形菜单变得简单。`JSTree`支持JSON和XML等多种数据源,与后端的Java接口完美对接...
在这个场景中,我们讨论的是使用 JavaScript 和 jQuery 实现的树形菜单。 树形菜单是一种常见的用户界面元素,它通常用于展示层次结构的数据,如文件系统或网站导航。这种菜单以折叠和展开的方式显示节点,用户可以...
这样设置后,当用户访问该JSP页面时,如果他们的计算机上安装了Microsoft Word,那么Word将会被用来打开这个页面。这种方式的优势在于它简化了模板的设计和调整过程,同时也避免了服务器端复杂的处理逻辑。 #### 二...
在给定的压缩包中,我们关注的是"JavaScript 实现的二维码产生/读取"这个主题,这涉及到两个主要的技术点:生成二维码(QR Code)和读取二维码。 首先,让我们来探讨二维码生成。QR码是一种二维条形码,可以存储...
在JavaScript编程中,将XML数据转化...总结,使用JavaScript从XML读取数据生成带有复选框的树形控件涉及XML解析、DOM操作、递归函数、事件处理以及可能的性能优化。掌握这些知识点,可以有效提升你在前端开发中的技能。
在IT领域,构建一个具有左侧树形菜单和右侧动态页面的应用是常见的设计模式,尤其在管理界面中。这种设计能够高效地展示和操作层级结构的数据,使得用户可以方便地导航和交互。在这个特定的项目中,标题“左侧树形...
本项目结合了JSP(JavaServer Pages)、dTree(一个JavaScript实现的树形菜单库)以及Taglib(自定义标签库),提供了一种高效的方法来实现在服务器端动态生成树结构并传递到客户端展示。 首先,JSP是Java的一种...
【标题】"jsp实现树形结构dtree"涉及的核心技术主要集中在JSP(JavaServer Pages)、JavaScript以及一种叫做dtree的树形展示库。这里,我们将会深入探讨这些技术及其在构建树形结构中的应用。 首先,JSP是Java的一...
6. **动态生成树形菜单**:前端JavaScript代码利用解析出的JSON数据动态构建DOM元素,形成树形结构。可以使用jQuery UI的Treeview插件,或者其他专门处理树形菜单的库如jsTree,根据数据生成交互式的菜单。 7. **...