<lable onmouseover="menushow()" onmouseout="menuhidden()">text</lable>

解决方案 »

  1.   

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML><HEAD><TITLE>多级右键菜单</TITLE>
    <META http-equiv=Content-Type content="text/html; charset=gb2312">
    <STYLE type=text/css>BODY {
    FONT-SIZE: 9pt
    }
    TABLE {
    FONT-SIZE: 9pt; MARGIN: 0px; CURSOR: default
    }
    TR {
    HEIGHT: 20px
    }
    TR.over {
    FONT-SIZE: 9pt; CURSOR: default; COLOR: #ffffff; BACKGROUND-COLOR: #66aadd
    }
    TR.out {
    FONT-SIZE: 9pt; CURSOR: default; COLOR: #ffffff; BACKGROUND-COLOR: #336699
    }
    DIV.rm_div {
    BORDER-RIGHT: #3377aa 2px outset; BORDER-TOP: #3377aa 2px outset; DISPLAY: none; FILTER: Alpha(Opacity='95'); BORDER-LEFT: #3377aa 2px outset; WIDTH: 0px; BORDER-BOTTOM: #3377aa 2px outset; POSITION: absolute; HEIGHT: 0px; BACKGROUND-COLOR: #336699
    }
    HR.sperator {
    BORDER-RIGHT: #3377aa 1px inset; BORDER-TOP: #3377aa 1px inset; BORDER-LEFT: #3377aa 1px inset; BORDER-BOTTOM: #3377aa 1px inset
    }
    </STYLE><SCRIPT language=JScript>
      <!--
      function RightMenu()
      {
        this.AddExtendMenu=AddExtendMenu;
        this.AddItem=AddItem;
        this.GetMenu=GetMenu;
        this.HideAll=HideAll;
        this.I_OnMouseOver=I_OnMouseOver;
        this.I_OnMouseOut=I_OnMouseOut;
        this.I_OnMouseUp=I_OnMouseUp;
        this.P_OnMouseOver=P_OnMouseOver;
        this.P_OnMouseOut=P_OnMouseOut;
        A_rbpm = new Array();
        HTMLstr  = "";
        HTMLstr += "<!-- RightButton PopMenu -->\n";
        HTMLstr += "\n";
        HTMLstr += "<!-- PopMenu Starts -->\n";
        HTMLstr += "<div id='E_rbpm' class='rm_div'>\n";
                            // rbpm = right button pop menu
        HTMLstr += "<table width='100%' border='0' cellspacing='0'>\n";
        HTMLstr += "<!-- Insert A Extend Menu or Item On Here For E_rbpm -->\n";
        HTMLstr += "</table>\n";
        HTMLstr += "</div>\n";
        HTMLstr += "<!-- Insert A Extend_Menu Area on Here For E_rbpm -->";
        HTMLstr += "\n";
        HTMLstr += "<!-- PopMenu Ends -->\n";
      }
      function AddExtendMenu(id,name,parent)
      {
        var TempStr = "";
        if(HTMLstr.indexOf("<!-- Extend Menu Area : E_"+id+" -->") != -1)
        {
          alert("E_"+id+"already exist!");
          return;
        }
        eval("A_"+parent+".length++");
        eval("A_"+parent+"[A_"+parent+".length-1] = id");  // 将此项注册到父菜单项的ID数组中去
        TempStr += "<!-- Extend Menu Area : E_"+id+" -->\n";
        TempStr += "<div id='E_"+id+"' class='rm_div'>\n";
        TempStr += "<table width='100%' border='0' cellspacing='0'>\n";
        TempStr += "<!-- Insert A Extend Menu or Item On Here For E_"+id+" -->";
        TempStr += "</table>\n";
        TempStr += "</div>\n";
        TempStr += "<!-- Insert A Extend_Menu Area on Here For E_"+id+" -->";
        TempStr += "<!-- Insert A Extend_Menu Area on Here For E_"+parent+" -->";
        HTMLstr = HTMLstr.replace("<!-- Insert A Extend_Menu Area on Here For E_"+parent+" -->",TempStr);    
        eval("A_"+id+" = new Array()");
        TempStr  = "";
        TempStr += "<!-- Extend Item : P_"+id+" -->\n";
        TempStr += "<tr id='P_"+id+"' class='out'";
        TempStr += " onmouseover='P_OnMouseOver(\""+id+"\",\""+parent+"\")'";
        TempStr += " onmouseout='P_OnMouseOut(\""+id+"\",\""+parent+"\")'";
        TempStr += " onmouseup=window.event.cancelBubble=true;";
        TempStr += " onclick=window.event.cancelBubble=true;";
        TempStr += "><td nowrap>";
        TempStr += "&nbsp;&nbsp;&nbsp;"+name+"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td><td style='font-family: webdings; text-align: right;'>";
        TempStr += "</td></tr>\n";
        TempStr += "<!-- Insert A Extend Menu or Item On Here For E_"+parent+" -->";
        HTMLstr = HTMLstr.replace("<!-- Insert A Extend Menu or Item On Here For E_"+parent+" -->",TempStr);
      }function AddItem(id,name,parent,location)
      {
        var TempStr = "";
        var ItemStr = "<!-- ITEM : I_"+id+" -->";
        if(id == "sperator")
        {
          TempStr += ItemStr+"\n";
          TempStr += "<tr style='height: 3;' class='out' onclick='window.event.cancelBubble=true;' onmouseup='window.event.cancelBubble=true;'><td colspan='2'><hr class='sperator'></td></tr>";
          TempStr += "<!-- Insert A Extend Menu or Item On Here For E_"+parent+" -->";
          HTMLstr = HTMLstr.replace("<!-- Insert A Extend Menu or Item On Here For E_"+parent+" -->",TempStr);
          return;
        }
        if(HTMLstr.indexOf(ItemStr) != -1)
        {
          alert("I_"+id+"already exist!");
          return;
        }
        TempStr += ItemStr+"\n";
        TempStr += "<tr id='I_"+id+"' class='out'";
        TempStr += " onmouseover='I_OnMouseOver(\""+id+"\",\""+parent+"\")'";
        TempStr += " onmouseout='I_OnMouseOut(\""+id+"\")'";
        TempStr += " onclick='window.event.cancelBubble=true;'";
        if(location == null)
          TempStr += " onmouseup='I_OnMouseUp(\""+id+"\",\""+parent+"\",null)'";
        else
          TempStr += " onmouseup='I_OnMouseUp(\""+id+"\",\""+parent+"\",\""+location+"\")'";
        TempStr += "><td nowrap>";
        TempStr += "&nbsp;&nbsp;&nbsp;"+name+"&nbsp;&nbsp;&nbsp;";
        TempStr += "</td><td></td></tr>\n";
        TempStr += "<!-- Insert A Extend Menu or Item On Here For E_"+parent+" -->";
        HTMLstr = HTMLstr.replace("<!-- Insert A Extend Menu or Item On Here For E_"+parent+" -->",TempStr);
      }
      function GetMenu()
      {
        return HTMLstr;
      }
      function I_OnMouseOver(id,parent)
      {
        var Item;
        if(parent != "rbpm")
        {
          var ParentItem;
          ParentItem = eval("P_"+parent);
          ParentItem.className="over";
        }
        Item = eval("I_"+id);
        Item.className="over";
        HideAll(parent,1);
      }
      function I_OnMouseOut(id)
      {
        var Item;
        Item = eval("I_"+id);
        Item.className="out";
      }
      

  2.   

    function I_OnMouseUp(id,parent,location)
      {
        var ParentMenu;
        window.event.cancelBubble=true;
        OnClick();
        ParentMenu = eval("E_"+parent);
        ParentMenu.display="none";
        if(location == null)
          eval("Do_"+id+"()");
        else
          window.open(location);
      }
      function P_OnMouseOver(id,parent)
      {
        var Item;
        var Extend;
        var Parent;
        if(parent != "rbpm")
        {
          var ParentItem;
          ParentItem = eval("P_"+parent);
          ParentItem.className="over";
        }
        HideAll(parent,1);
        Item = eval("P_"+id);
        Extend = eval("E_"+id);
        Parent = eval("E_"+parent);
        Item.className="over";
        Extend.style.display="block";
        Extend.style.posLeft=document.body.scrollLeft+Parent.offsetLeft+Parent.offsetWidth-4;
        if(Extend.style.posLeft+Extend.offsetWidth > document.body.scrollLeft+document.body.clientWidth)
            Extend.style.posLeft=Extend.style.posLeft-Parent.offsetWidth-Extend.offsetWidth+8;
        if(Extend.style.posLeft < 0) Extend.style.posLeft=document.body.scrollLeft+Parent.offsetLeft+Parent.offsetWidth;
        Extend.style.posTop=Parent.offsetTop+Item.offsetTop;
        if(Extend.style.posTop+Extend.offsetHeight > document.body.scrollTop+document.body.clientHeight)
          Extend.style.posTop=document.body.scrollTop+document.body.clientHeight-Extend.offsetHeight;
        if(Extend.style.posTop < 0) Extend.style.posTop=0;
      }
      function P_OnMouseOut(id,parent)
      {
      }
      function HideAll(id,flag)
      {
        var Area;
        var Temp;
        var i;
        if(!flag)
        {
          Temp = eval("E_"+id);
          Temp.style.display="none";
        }
        Area = eval("A_"+id);
        if(Area.length)
        {
          for(i=0; i < Area.length; i++)
          {
            HideAll(Area[i],0);
            Temp = eval("E_"+Area[i]);
            Temp.style.display="none";
            Temp = eval("P_"+Area[i]);
            Temp.className="out";
          }
        }
      }  //document.onmouseup=OnMouseUp;
      document.onclick=OnClick;
      function OnMouseUp()
      {
       // if(window.event.button == 2)
        {
          var PopMenu;
          PopMenu = eval("E_rbpm");
          HideAll("rbpm",0);
          PopMenu.style.display="block";
          PopMenu.style.posLeft=document.body.scrollLeft+window.event.clientX;
          PopMenu.style.posTop=document.body.scrollTop+window.event.clientY;
          if(PopMenu.style.posLeft+PopMenu.offsetWidth > document.body.scrollLeft+document.body.clientWidth)
            PopMenu.style.posLeft=document.body.scrollLeft+document.body.clientWidth-PopMenu.offsetWidth;
          if(PopMenu.style.posLeft < 0) PopMenu.style.posLeft=0;
          if(PopMenu.style.posTop+PopMenu.offsetHeight > document.body.scrollTop+document.body.clientHeight)
            PopMenu.style.posTop=document.body.scrollTop+document.body.clientHeight-PopMenu.offsetHeight;
          if(PopMenu.style.posTop < 0) PopMenu.style.posTop=0;
        }
      }
      function OnClick()
      {
        HideAll("rbpm",0);
      }
      // Add Your Function on following
      function Do_viewcode(){window.location="view-source:"+window.location.href;}
      function Do_help(){window.showHelp(window.location);}
      function Do_exit() {window.close();}
      function Do_refresh() {window.location.reload();}
      function Do_back() {history.back();}
      function Do_forward() {history.forward();}
      function Do_author(){alert("姓名:杨俊\n网名:风舞影天(Snwcwt)\nE_mail:[email protected]\n个人主页:http://202.115.147.160/snwcwt(正在制作中)\n")}
      -->
    </SCRIPT><META content="MSHTML 6.00.2600.0" name=GENERATOR></HEAD>
    <BODY oncontextmenu=window.event.returnValue=false>
    <DIV id=snwcwt>&nbsp;</DIV>
    <div onmouseover=OnMouseUp() >catch me to show !</div>
    <SCRIPT language=JScript>
      <!--
      var menu = new RightMenu();
      menu.AddExtendMenu("location","我的链接","rbpm");
        menu.AddExtendMenu("lscit","四川工业学院校园网","location");
          menu.AddItem("scit_scit","川工首页","lscit","http://www.scit.edu.cn");
          menu.AddItem("scit_lib","川工图书馆","lscit","http://202.115.151.46");
          menu.AddItem("sperator","","lscit",null);
          menu.AddItem("scit_century","世纪学苑","lscit","http://202.115.148.230/");
          menu.AddItem("scit_the5","第五空间","lscit","http://the5.scit.edu.cn/");
          menu.AddItem("scit_lianyi","联谊网站","lscit","http://202.115.148.240");
          menu.AddItem("scit_message","信息导报","lscit","http://202.115.151.114/xx");
          menu.AddItem("scit_student","书生之家川工境象","lscit","http://202.115.151.100");
          menu.AddItem("sperator","","lscit",null);
          menu.AddItem("scit_bbs","川工BBS","lscit","http://202.115.144.32");
          menu.AddItem("scit_cbbs","世纪学苑BBS","lscit","http://202.115.144.37");
        menu.AddExtendMenu("stunet","学生网站","location");
          menu.AddItem("stu_century","世纪学苑","stunet","http://202.115.148.230/");
          menu.AddItem("stu_wjl","望江楼","stunet","http://wjl.scu.edu.cn");
          menu.AddItem("stu_freedim","自由天地","stunet","http://www.freedim.net/");
          menu.AddItem("stu_stuhome","学生之家","stunet","http://www.stuhome.net");
          menu.AddItem("stu_rw","人文网","stunet","http://www.rw.uestc.edu.cn/");
          menu.AddItem("stu_the5","第五空间","stunet","http://the5.scit.edu.cn/");
          menu.AddItem("stu_flying","我心飞扬","stunet","http://flying.swpi.edu.cn/");
          menu.AddItem("stu_21cn","21CN校园网","stunet","http://www.21cn.edu.cn/");
          menu.AddItem("stu_yaguo","网虫乐园","stunet","http://www.yaguo.com/");
        menu.AddItem("sperator","","location",null);
     
      document.writeln(menu.GetMenu());
      -->
      </SCRIPT>
    </BODY></HTML>
      

  3.   

    来个简单点的,
    用层来实现。
    <div id="myDiv" >菜单</div>
    <input"text" name="myInput" onmouseover="document.myDiv.left=this.offsetLeft;document.myDiv.top=this.offsetTop;document.myDiv.style.display='bolck';" onmouseout="document.myDiv.style.display='none';">
      

  4.   

    shyslysky(飞天):您的代码好像不能实现鼠标离开菜单消失嘛!而且菜单的位子不能固定.
      

  5.   

    加个onmouseout吧固定位置:
       PopMenu.style.posLeft=100;
       PopMenu.style.posTop=100;
      

  6.   

    这段代码类似,你改改就ok了
    <script language="javascript" id="clientEventHandlersJS">
    <!--
    var CurrentItem
    function ShowToolItem(Index) 
    {
    if (CurrentItem==null)
    {
    CurrentItem=document.getElementById ("ToolItem_"+Index);
    CurrentItem.style.display="";
    }
    else
    {
    CurrentItem.style.display="none";
    CurrentItem=document.getElementById ("ToolItem_"+Index);
    CurrentItem.style.display="";
    }
    } //-->
    </script>
    <table>
    <TR id="ToolItem_1" style="DISPLAY: none" height="100%">