日期:2014-05-16  浏览次数:20533 次

右键菜单的问题
1.我做了多级菜单,就像开始菜单一样,不过,当我用onmousemove显示子菜单menuPanel.style.display="block";后子菜单并不能够停住,因为我定义了父级菜单onmouseout改变选项,所以当它想选择子菜单时子菜单就会消失而父菜单项也会没有再选中状态
2.我定义的

  whichDiv=event.srcElement;
  var MouseY=event.clientY; //获取鼠标坐标
  var MouseX=event.clientX;
  var x;
  var y;
  var WindowWidth=document.body.offsetWidth;//获取网页窗口宽度和高度
  var WindowHeight=document.documentElement.offsetHeight;
  var menuPanel=document.getElementById("menu4");
  var ChildPanelWidth=parseInt(menuPanel.style.width.replace("px",""));//获取子面板宽度和高度
  var ChildPanelHeight=parseInt(menuPanel.style.width.replace("px",""));
  if((MouseX+ChildPanelWidth)>=(WindowWidth-5)) //如果鼠标X坐标+面板宽度+子面板宽度>网页窗口宽度,则面板左边显示
  {
  x=MouseX-ChildPanelWidth;
  }
  else
  {
  x=MouseX+2;
  }
   
  if((MouseY+ChildPanelHeight)>=WindowHeight) //如果鼠标Y坐标+面板高度>网页窗口高度,则面板上边显示
  {
  y=MouseY-ChildPanelHeight+13+30;
   
  }
显示菜单的位置,在没有滚动页面的时候(就是说没有超过屏幕宽度的时候),是正确显示的,但是一旦超过,菜单现实的位置就不对了啊??!!
谢谢各位!!帮忙

------解决方案--------------------
这个不是那么简单的.
要定义一个全局的变量(可能是数组)来保存目前经历的菜单序列以维护使他们加亮并保持显示.
当鼠标到本级菜单时隐藏本级所有其他菜单(可以从序列里取出来控制)的子项,然后显示本菜单的子项.
至于你说的菜单位置,就要判断屏幕宽度和菜单本身宽度以及当前位置来定位,也不是那么容易做的,需要取得各个相关元素的位置以及宽高。
多看看DHTML手册会对你有帮助.由于比较麻烦的,所以只讲原理代码就不写了。