日期:2014-05-20  浏览次数:20701 次

主题: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放入父节点中