javascript生成的树形目录如何把读取的id传递给jsp页面

我用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;
}

}

2个回答

//点击叶子节点后的动作,目前只是弹出对话框,可修改为链接到具体的页面
this.clickItem = function(_link) {
return ;

} 

这个link 不就可以向jsp或action传参数,你把id拼上去就行啦

楼上讲的对,从树节点得到id,拼id就行了。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
js与JSP的数据如何相互传递
-
JSP中如何用JS给JS生成的table其中一列加上超连接
-
我想请教一个关于Ext JS4根据权限动态生成左侧树形菜单,和上侧Menu下拉菜单。
-
js生成file,ajax传递到服务器
-
从js传递参数到jsp页面,参数携带&怎么办
-
jsp页面for循环生成表单,js校验问题
-
用ajax动态读取多个数据库数据生成资源树
-
如何将mysql中读取的数据赋值到一个jsp的变量中
-
自己写一个JS树形插件
-
JS关于生成有20W条数据的静态树
-
jsp页面的内容,js加载显示?
-
JS怎样给树形添加复选框
-
如何在js中生成div的html代码中加载另外一个jsp页面?
-
jsp页面加载JS文件后页面空白
-
对树形目录进行渲染,选中的菜单显示后缀功能项
-
javascript递归生成树
-
js后台动态生成菜单树,给用户分配权限时如何处理?
-
js如何读取html页面中的信息?
-
我在SQL里面读取出来的相关信息,如果传递到JS里面的数组呢???
-
Linux文件操作高频使用命令
文章目录0.新建操作:1.查看操作2.删除操作3.复制操作4.移动操作:5.重命名操作:6.解压压缩操作 0.新建操作: mkdir abc #新建一个文件夹 touch abc.sh #新建一个文件 1.查看操作 查看目录: ll #显示目录文件详细信息 查看文件内容: cat|head|tail命令 cat abc.txt #查看abc的内容 head -5 abc.txt #...
程序员实用工具网站
目录 1、搜索引擎 2、PPT 3、图片操作 4、文件共享 5、应届生招聘 6、程序员面试题库 7、办公、开发软件 8、高清图片、视频素材网站 9、项目开源 10、算法 11、在线工具宝典大全 程序员开发需要具备良好的信息检索能力,为了备忘(收藏夹真是满了),将开发过程中常用的网站进行整理。 1、搜索引擎 1.1、秘迹搜索 一款无敌有良心、无敌安全的搜索引擎,不会收...
我的 Input框 不可能这么可爱
作者:陈大鱼头 github: KRISACHAN &lt;input /&gt; 标签是我们日常开发中非常常见的替换元素了,但是最近在刷 whattwg 跟 MDN 的时候发现 跟 &lt;input /&gt; 有很多相关的属性,选择器都没怎么用过,所以就开篇文章来整理一下一些比较有趣或者实用的知识点。 本篇文章默认大家已经知道 &lt;input /&gt; 标签的基本用法,不会做过...
BMP、GIF、TIFF、PNG、JPG和SVG格式图像的特点
目录 1、BMP格式图像 2、GIF格式图像 3、TIFF格式图像 4、PNG格式图像 5、JPG格式图像 6、SVG格式图像 7、总结 7.1、有损vs无损 7.2、索引色vs直接色 7.3、点阵图vs矢量图 7.4、总结 一张图片可以储存为多种格式,为什么有的几十KB,有的几百MB,有的静止不动,有的是好几个画面循环播放?在项目开发的过程中经常会读取或保存图像...
nginx学习,看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件
文章目录前言一、nginx简介1. 什么是 nginx 和可以做什么事情2.Nginx 作为 web 服务器3. 正向代理4. 反向代理5. 动静分离6.动静分离二、Nginx 的安装三、 Nginx 的常用命令和配置文件四、 Nginx 配置实例 1 反向代理五、 Nginx 配置实例 2 负载均衡六、 Nginx 配置实例 3 动静分离七、 Nginx 的高可用集群 前言 一、nginx简介...
MySQL数据库—SQL汇总
一、准备 下文整理常见SQL语句的用法,使用MySQL5.7测试,参考了尚硅谷MySQL教程及用例。用例sql: 链接: https://pan.baidu.com/s/1tb3-12MRNFjV8drFlN6wzg&amp;shfl=sharepset 密码: fc2h 为了方便查阅可从右侧目录快速索引 二、DQL(Data Query Language)数据查询语言 1、语句顺序 书写顺序...
动画:用动画给女朋友讲解 TCP 四次分手过程
作者 | 小鹿 来源 | 公众号:小鹿动画学编程 写在前边 大家好,我们又见面了,做为一个业余的动画师,上次的用动画的形式讲解 TCP 三次握手过程再各大平台收到了广大读者的喜爱,说文章有趣、有货、有内容,也受到了很多读者的关注。很多读者留言说什么时候用动画讲一讲 TCP 四次挥手的过程,为了应大家的要求,今天我们就生动有趣的用动画给大家分享 TCP 四次挥手(分手)过程。 动画:用动画给...
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过...
面试最后一问:你有什么问题想问我吗?
尽管,我们之前分享了这么多关于面试的主题: 高薪必备的一些Spring Boot高级面试题 面试必问:设计模式遵循的面向对象设计原则! 面试必问:怎么保证缓存与数据库的双写一致性? 27道高频Spring面试题,你能答对几个? 唠唠面试常问的:面向对象六大原则 一文高效图解二叉树面试题 Java面试中最高频的那20%知识点是什么? 百度面试题:求数组最大值 ... 然而,最后这个90%可见...
python 程序员进阶之路:从新手到高手的100个模块
在知乎和CSDN的圈子里,经常看到、听到一些 python 初学者说,学完基础语法后,不知道该学什么,学了也不知道怎么用,一脸的茫然。近日,CSDN的公众号推送了一篇博客,题目叫做《迷思:Python 学到什么程度可以面试工作?》,真实反映了 python 程序员在成长过程中的一些困惑。
Python——画一棵漂亮的樱花树(不同种樱花+玫瑰+圣诞树喔)
最近翻到一篇知乎,上面有不少用Python(大多是turtle库)绘制的树图,感觉很漂亮,我整理了一下,挑了一些我觉得不错的代码分享给大家(这些我都测试过,确实可以生成) one 樱花树 动态生成樱花 效果图(这个是动态的): 实现代码 import turtle as T import random import time # 画樱花的躯干(60,t) def Tree(branch, ...
2019计算机视觉-包揽所有前沿论文源码
大家是否遇到过这种情况,就是在工作或者学习的时候,想去某些方向的网络,但是呢,尴尬的是,老旧的网络里不想要,前沿的网络又不知道有哪些。为了解决大家的这个困扰,本人收集了2019年大部分前沿的网络相关链接,之后我会没周一更新一次(明年会开启2020的收集博客) 有兴趣的朋友可以加微信:a944284742相互讨论技术。若是帮助到了你什么,一定要记得点赞!因为这是对我最大的鼓励。 一、目标检测 (1)...
阿里编程规范(精简版)
阿里编程规范 及 阿里Java开发规约插件 Alibaba Java Coding Guidelines 统一规范标准将有助于提高行业编码规范化水平,帮助行业人员提高开发质量和效率、大大降低代码维护成本。 2017年年初,首次公开了《阿里巴巴Java开发手册》,自从第一个版本起,倍受业界关注。为了让开发者更加方便、快速的将规范推动并实行起来,阿里巴巴基于手册内容,研发了一套自动化的IDE检测插件(...
MySQL常用命令/用户管理/数据库备份与恢复
MySQL密码设置与更改: 设置root用户密码: [root@linux ~]# mysqladmin -uroot password "123456" 更改root用户密码: [root@linux ~]# mysqladmin -uroot -p'123456' password '654321' 登录数据库更改密码: MariaDB [(none)]&gt; use mysql; Ma...
漫话:什么是 https ?这应该是全网把 https 讲的最好的一篇文章了
今天这篇文章,讲通过对话的形式,让你由浅入深着知道,为什么 Https 是安全的。 一、对称加密 一禅:在每次发送真实数据之前,服务器先生成一把密钥,然后先把密钥传输给客户端。之后服务器给客户端发送真实数据的时候,会用这把密钥对数据进行加密,客户端收到加密数据之后,用刚才收到的密钥进行解密。如图: 当然,如果客户端要给服务器发送数据,也是采用这把密钥来加密,这里为了方便,我采用单方向...
HTML CSS整理笔记
常见字体单位: 1.em 移动端常用的字体尺寸单位,说白em就相当于“倍”,比如设置当前的div的字体大小为1.5em,则当前的div的字体大小为:当前div继承的字体大小*1.5。 但当div进行嵌套时,em始终按当前div继承的字体大小来缩放。 2.rem r是root的意思,即相对于根节点html的font-size进行缩放,当有嵌套关系时,嵌套关系的元素的字体大小始终按照根节点的字体大小...
史上最全的mysql基础教程
启动与停止 启动mysql服务 sudo /usr/local/mysql/support-files/mysql.server start 停止mysql服务 sudo /usr/local/mysql/support-files/mysql.server stop 重启mysql服务 sudo /usr/local/mysql/support-files/mysql.server resta...
为什么你学不会递归?告别递归,谈谈我的经验
可能很多人在大一的时候,就已经接触了递归了,不过,我敢保证很多人初学者刚开始接触递归的时候,是一脸懵逼的,我当初也是,给我的感觉就是,递归太神奇了! 可能也有一大部分人知道递归,也能看的懂递归,但在实际做题过程中,却不知道怎么使用,有时候还容易被递归给搞晕。也有好几个人来问我有没有快速掌握递归的捷径啊。说实话,哪来那么多捷径啊,不过,我还是想写一篇文章,谈谈我的一些经验,或许,能够给你带来一些帮助...
C++实现贪吃蛇代码
C语言实现贪吃蛇,有点难写啊。 我是用VS写的 代码里有注释 我就不多说了 大家也可以直接去下载我的可执行文件 #include&lt;stdio.h&gt; #include&lt;time.h&gt; #include&lt;windows.h&gt; #include&lt;conio.h&gt; #include&lt;stdlib.h&gt; #define mapheigh...
大学四年,分享看过的优质书籍
数据结构与算法是我在大学里第一次接触到的,当时学了很多其他安卓、网页之类的,一开始就感觉纳闷,数据结构和算法学这个有啥用,再加上上的是一所野鸡大学,老师讲的也是模模糊糊,平时做项目、练习也几乎不用数据结构,所以考试应付应付就过了,也没太在意。 到了大三的时候,面临考研和就业了,突然看到学长考研的数据结构题和面试网站的要求,突然意识到数据结构和算法的重要性,真的很重要,重要的话说三遍,真的很重要,...
有哪些让程序员受益终生的建议
从业五年多,辗转两个大厂,出过书,创过业,从技术小白成长为基层管理,联合几个业内大牛回答下这个问题,希望能帮到大家,记得帮我点赞哦。 敲黑板!!!读了这篇文章,你将知道如何才能进大厂,如何实现财务自由,如何在工作中游刃有余,这篇文章很长,但绝对是精品,记得帮我点赞哦!!!! 一腔肺腑之言,能看进去多少,就看你自己了!!! 目录: 在校生篇: 为什么要尽量进大厂? 如何选择语言及方...
相关热词 c# 增加元素 c#控制台简单加法 c# 服务端框架 c# 判断事件是否注册 c#中is和has c# udp 连接超时 c#词典 c#实现排列组合 c# oss 上传 c#判断输入的是否为ip