我用dtree在web里做了一个树状菜单,不知在节点上是否可以添加右键菜单,如果能加的话该怎么加,请高手指教,希望能给出具体代码事例,谢谢!

解决方案 »

  1.   

    呵呵,這囘分不少啊<script language="javascript">
    var oPopup=null; //弹出菜单
    var popWidth=110; //弹出菜单的宽度
    var popHeight=140; //弹出菜单的高度
    var curRow=null; //记录弹出菜单最后指向的行function init(){
       oPopup = window.createPopup();
       var oPopBody = oPopup.document.body;
       //设置菜单样式
       oPopBody.style.backgroundColor = "scrollbar";
       oPopBody.style.border = "2px solid";
       oPopBody.style.borderColor = "buttonhighlight buttonshadow buttonshadow buttonhighlight"
       var strHTML=""
       strHTML+='<table oncontextmenu="return false;" onselectstart="return false;" id="tbMenu" ';
       strHTML+=' style="cursor:default; width:100%; height:100%;font-size:12px;" border=0 cellpadding=0 cellspacing=2>';
       //在这里扩展菜单的选项start
       strHTML+='<tr operation="edit"><td>&nbsp;&nbsp;编辑</td></tr>';
       strHTML+='<tr operation="refresh"><td>&nbsp;&nbsp;刷新</td></tr>';
       strHTML+='<tr operation="addrowup"><td>&nbsp;&nbsp;添加新行(上)</td></tr>';
       strHTML+='<tr operation="addrowdown"><td>&nbsp;&nbsp;添加新行(下)</td></tr>';
       strHTML+='<tr operation="delrow"><td>&nbsp;&nbsp;删除该行</td></tr>';
       strHTML+='<tr operation="moveup"><td>&nbsp;&nbsp;向上移动一行</td></tr>';
       strHTML+='<tr operation="movedown"><td>&nbsp;&nbsp;向下移动一行</td></tr>';
       //在这里扩展菜单的选项end
       strHTML+='</table>';   oPopBody.innerHTML=strHTML;
       var tb = oPopup.document.getElementById("tbMenu");
       var rs=tb.rows;
       for(var i=0;i<rs.length;i++){
          var row=rs[i];
          addEvent(row);
       }
    }function showMenu(){
       var e=window.event;
       var src=e.srcElement;
       oPopup.show(window.event.clientX, window.event.clientY, popWidth, popHeight, document.body);
       window.event.returnValue=false;
    }function addEvent(row){
       row.attachEvent("onmouseover",function(){selRow(row)});
       row.attachEvent("onclick",function(){onEvent(row)});
    }
    function selRow(src){
       if(curRow!=null){  curRow.style.backgroundColor="scrollbar"; curRow.style.color="black";}
       curRow=src;   curRow.style.backgroundColor="midnightblue"; curRow.style.color="white";
    }function onEvent(src){
       oPopup.hide();
       switch(src.operation){
          //在这里为菜单项的点击事件添加处理方法
          //本示例的方法只供参考,没有实现
          case "edit": example(src.operation); break;
          case "refresh": example(src.operation); break;
          case "addrowup": example(src.operation); break;
          case "addrowdown": example(src.operation); break;
          case "delrow": example(src.operation); break;
          case "moveup": example(src.operation); break;
          case "movedown": example(src.operation); break;
          default: return;
       }
       src.style.backgroundColor="scrollbar"; 
       src.style.color="black";
       curRow=null; 
    }function example(str){
       alert("您选择了"+str+"操作!");
    }
    </script>
      

  2.   

    刚刚发现了一个问题,很郁闷,谁能解决?
    我有一个jsp页面“treejs.jsp”,本来没有问题,能正常显示,但当tomcat重启以后就又不能正常显示了,一大堆错误,再到eclipse里去看自动生成的“treejs_jsp.java”文件也是一大堆错误,但是若此时删除“treejs_jsp.java”文件,将“treejs.jsp”不做任何修改再保存一下,就又可以正常显示了,但生成“treejs_jsp.java”文件还是一对错误,若在重启tomcat就又不能正常显示了,如此循环,不胜烦恼,望高人指点!谢谢!是不是我的jsp页面有问题?有问题的话为什么又能正常显示呢,若没问题,生成的“treejs_jsp.java”文件为什么会有那么多错误呢,奇怪!!!
      

  3.   

    你的代码,看不太懂,怎么用呀,怎么能在点击节点的时候显示菜单亚,web开发初学
      

  4.   

    我用下面的代码给我的web页面添加了一个右键菜单,但这个菜单无论在页面的什么地方点击都会出现,我只想在用右键点击dtree的节点的时候才让菜单出现,而且点击的节点不同,出现的菜单也不一样,谁能告诉我该怎么做呀?<script language="javascript">
     
    //页面加载时调用此函数
    function showMenu(id) {
        if(id == "") { //默认点击页面空白处时的右键菜单
            popMenu(itemMenu,110,"100");  //默认只显示“新增”菜单项
            //menuForm.addNode.value = "/ipmanage/addNode.jsp";   //注意ipmanage目录下需要已经创建了一个addNode.jsp页面
            //menuForm.delNode.value = "";
            //menuForm.updateNode.value = "";
        }else{   //根据特定的字符串解析
          var temparr = new Array();
          //temparr = temp.split(",");
         // menuForm.addNode.value = temparr[0];
         //menuForm.delNode.value = temparr[1];
          //menuForm.updateNode.value = temparr[2];
     
          popMenu(itemMenu,110,id);
        }
        event.returnValue=false;
        event.cancelBubble=true;
        return false;
    }
     
    //弹出右键菜单
    function popMenu(menuDiv,width,rowControlString)
    {
        //创建弹出菜单
        var pop=window.createPopup();
        //设置弹出菜单的内容
        pop.document.body.innerHTML=menuDiv.innerHTML;   //这句话控制了弹出菜单的html代码为定义右键菜单的div的html代码,即弹出时显示div中的表格
        var rowObjs=pop.document.body.all[0].rows;   //获得表格中的行对象
        //获得弹出菜单的行数
        var rowCount=rowObjs.length;
        //循环设置每行的属性
        for(var i=0;i<rowObjs.length;i++)
        {
            //如果设置该行不显示,则行数减一
            var hide=rowControlString.charAt(i)!='1';
            if(hide){
                rowCount--;
            }
            //设置是否显示该行
            rowObjs[i].style.display=(hide)?"none":"";
            //设置鼠标滑入该行时的效果
            rowObjs[i].cells[0].onmouseover=function()
            {
                this.style.background="#E8E8E8";
                this.style.color="blue";
            }
            //设置鼠标滑出该行时的效果
            rowObjs[i].cells[0].onmouseout=function(){
            this.style.background="#D0D0D0";
            this.style.color="black";
            }
        }
        //屏蔽系统的Web页面本身的右键菜单
        pop.document.oncontextmenu=function() {
                return false;
        }
        //选择右键菜单的一项后,菜单隐藏
        pop.document.onclick=function() {
                pop.hide();
        }
        //显示右键菜单
        pop.show(event.clientX-1,event.clientY,width,rowCount*20,document.body);
        return true;
    }
    </script><div id="itemMenu" style="display:none">
      <table border="1" width="100%" bgcolor="#D0D0D0" style="border:thin" cellspacing="0">
        <tr>
          <td style="cursor:hand;border:outset 1;font-size:12px" align="left" onclick="parent.addNode()">新增</td>
        </tr>
     
        <tr>
          <td style="cursor:hand;border:outset 1;font-size:12px" align="left" onclick="parent.delNode()">删除</td>
        </tr>    <tr>
          <td style="cursor:hand;border:outset 1;font-size:12px" align="left" onclick="parent.updateNode()">更新</td>
        </tr>
      </table>
    </div>