同上

解决方案 »

  1.   

    用 iframe 或者 window.createPopup() 做你的菜单层载体
      

  2.   

    菜单出现的位置上,把它藏起来,离开的时候显示回来。
    asp.net menu 控件就是这样实现的。
    我把里面的几个方法抽出来了:
    //隐藏"select"控件==================================================================================
    // Hides HTML select elements that are overlapping the given menu group 
    function aspnm_hideSelectElements(group)
    {
      if (workspace.window.document.getElementsByTagName) 
      {
        var arrElements = workspace.window.document.getElementsByTagName('select'); 
          for (var i = 0; i < arrElements.length; i++) 
            //if (aspnm_objectsOverlapping(document.all[group], arrElements[i]))
    if (aspnm_objectsOverlapping(eval(group), arrElements[i]))
              arrElements[i].style.visibility = 'hidden'; 
      }
    }
    // Whether the given objects are overlapping 
    function aspnm_objectsOverlapping(obj1, obj2)
    {
      var result = true; 
      var obj1Left = aspnm_pageX(obj1) - window.document.body.scrollLeft; 
      var obj1Top = aspnm_pageY(obj1) - window.document.body.scrollTop; 
      var obj1Right = obj1Left + obj1.offsetWidth; 
      var obj1Bottom = obj1Top + obj1.offsetHeight;
      var obj2Left = aspnm_pageX(obj2) - workspace.window.document.body.scrollLeft; 
      var obj2Top = aspnm_pageY(obj2) - workspace.window.document.body.scrollTop+30; 
      var obj2Right = obj2Left + obj2.offsetWidth; 
      var obj2Bottom = obj2Top + obj2.offsetHeight;
      
      if (obj1Right <= obj2Left || obj1Bottom <= obj2Top || 
          obj1Left >= obj2Right || obj1Top >= obj2Bottom) 
        result = false; 
      return result; 
    }
    // Calculates the absolute page x coordinate of a relatively positioned element
    function aspnm_pageX(element)
    {
      var x = 0;
      do 
        x += element.offsetLeft;
      while ((element = element.offsetParent));
      return x; 
    }// Calculates the absolute page x coordinate of a relatively positioned element
    function aspnm_pageY(element)
    {
      var y = 0;
      do 
        y += element.offsetTop; 
      while ((element = element.offsetParent));
      return y; 
    }
    // Restores all HTML select elements on the page 显示被隐藏的控件==========
    function aspnm_restoreSelectElements()
    {
      if (document.getElementsByTagName) 
      {
        var arrElements = workspace.window.document.getElementsByTagName('select'); 
    for (var i = 0; i < arrElements.length; i++) {
    arrElements[i].style.visibility = 'visible'; }
      }
    }
    怎么控制就你的事了。
      

  3.   

    这不是很麻烦吗?我有很多网页!每个网页都要改一改!太不方便了,而且菜单也不是全覆盖select,覆盖了一半的,隐藏了它不是很怪吗???
    有没有ifram和window.createPopup()的例子呢??createPopup()可能也有问题的,如果浏览器的位置变了,会不会改变它的位置呢??真头痛!!
      

  4.   

    请问iframe如何用,在Macromedia Dreamweaver MX 2004中如何用,请指教!
      

  5.   

    设置z-index=1不行试过了!   iframe试过可以,createPopup()未试过!
      

  6.   

    在网页中,下拉框的级别是最高的,没有其他控件能用任何方式盖在它上面.
    但非控件中,iframe就可以盖在它上面.
    楼主可用点击弹出IFRAME的方式来实现你的想法.一般用法为:
    <iframe id=xx name=xx src=xxx.aspx frameborder=0></iframe>
    其实在NET或DW里面,写的时候都有语法支持的.
      

  7.   

    我说的那个方法,不用每个页都写代码的,放在了一个JS文件里,并且也只有一个页里调此JS。
    我们公司所有的有菜单的项目都用了我的这套菜单,根据用户权限动态的。
    以上的代码只是我的menu.js里面的关于隐藏ddl的部分代码。当然,要是你能要求你的客户端全都是IE6以上的版本,用createPopup()也是不错的选择,位置控制不是问题。难的是怎么动态生成菜单数据。