问题在于onMouseOut这个事件,由于菜单里面有东西,而鼠标移到东西里面的时候就触发了onMouseOut事件,所以产生你所说的问题
解决办法就是吧onMouseOut换成onMouseLeave

解决方案 »

  1.   

    针对楼主的问题,这个地方的onMouseLeave与onMouseOut并没有什么差异,
    首先请看看onMouseLeave与onMouseOut的区别:
    比如:在一个<td>标签有一个<a>标签1.由于<a>标签是<td>标签的子标签。所以根据事件冒泡的原理,<a>标签上的onMouseOut和onMouseOver事件会被传递到<td>标签上。2.对于onMouseOut和onMouseOver事件,浏览器会把<a>和<td>看做两个不同的object。从而当鼠标在两者之间移动时,会激发这两个事件。3.而且在浏览器中有一个很有意思的特性,带有连接的文字是空心的。就是说当鼠标点没有定位在文字曲线上时,浏览器认为它是定位在该文字下面的object上的。(比如说你的鼠标是定位在123的1和2之间,而不定位在1上或2上时,相当于定位在<td>上。)4.而onMouseEnter和onMouseLeave事件就把<a>和<td>都看成是鼠标在一个对象(<td>)上了,看下边的例子,把鼠标移到123上用 onMouseOut,当你将鼠标指针放到链接上去时就触发了onMouseOut事件,这里的<a href>被当成一个对象了。其实差别不是很大。
    <table>
    <tr>
    <td onMouseOut="alert('onMouseOut')" bgcolor="#9999FF">
    ------------------------------------------<br>
    hhhhhhhhhhhh <a href="#">123</a> ggggggggggg<br>
    ------------------------------------------<br>
    </td>
    </tr>
    </table>
    用 onMouseLeave 当你将鼠标指针放到链接上去时并没有就触发了onMouseLeave事件。
    <table>
    <tr>
    <td onMouseLeave="alert('onMouseLeave')" bgcolor="#9999FF">
    ------------------------------------------<br>
    hhhhhhhhhhhh <a href="#">123</a> ggggggggggg<br>
    ------------------------------------------<br>
    </td>
    </tr>
    </table>
      

  2.   

    不好意思,贴错了,是onMouseOut和onMouseLeave存在相应的差异。所以说,当你用表格时,在onMouseOut时,表格会被认为是一个对象,而在onMouseLeave状态下不会被认为是对象,而是鼠标事件。个人认为楼主应该设置一个让别人去点击触发的地方,就好比树形菜单里有一个“全部展开”和“全部关闭”一样,点第一次时就弹出菜单,点第二次时就隐藏菜单。这样可能效果会更直观一点。
      

  3.   

    收到!!!但是http://www.uniteinfo.com/study/baoku/0010.htm
    这个范例中并没有使用onMouseLeave啊
      

  4.   

    增加一个全局变量去控制onMouseout,试试下面的:
    <script language="JavaScript">
    var gb = 0;
    function pushout()
    {if (menuly.style.pixelLeft<0)
    {
    gb = 0
    }
     if ( gb == 0 )
     {
    if(menuly.style.pixelLeft>50)
    menuly.style.pixelLeft+=20;
    else if(menuly.style.pixelLeft>30)
    menuly.style.pixelLeft+=10;
    else if(menuly.style.pixelLeft>10)
    menuly.style.pixelLeft+=2;
    else
    menuly.style.pixelLeft+=1;
    if(menuly.style.pixelLeft<0)
    moveingout = window.setTimeout(pushout,20);
    else
    {
    clearTimeout(moveingout);
    gb = 1;
    }

     }
     
    }function resetdiv()
    {
    if (gb == 1)
    {
    menuly.style.pixelLeft=-170;
    }
    }
    </script>
    <body><br><div id="menuly" style="position:absolute; left:-176px; top:46px; width:206px; background-color:#66FFFF;display:block;" onMouseOver="pushout()" onMouseOut="resetdiv();return false;">
    <table width="100%" border="0" cellpadding="0" cellspacing="0" bordercolor="#000000">
    <tr>
    <td width="84%" bgcolor="#FFFFFF">www.sina.com.cn</td>
    <td width="16%" rowspan="6" bgcolor="#6699FF">我们的祖国</td>
    </tr>
    <tr>
    <td bgcolor="#FFFFFF">www.sohu.com</td>
    </tr>
    <tr>
    <td bgcolor="#FFFFFF">www.china.com</td>
    </tr>
    <tr>
    <td bgcolor="#FFFFFF">www.icbc.com.cn</td>
    </tr>
    <tr>
    <td bgcolor="#FFFFFF">www.manuint.com</td>
    </tr>
    <tr>
    <td bgcolor="#FFFFFF">www.crksy.com</td>
    </tr>
    </table>
    </div>
    </body>
    </html>
      

  5.   

    加全局变量后效果一样,不过这回可以都出来了,不过看看下面的代码没用全局变量没用onmouseleave都可以正常运行,不行了,都晕了 
    <!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 {
    MARGIN: 25px 25px 25px
    }
    #all TD {
    FONT-SIZE: 12px; LINE-HEIGHT: 15px; FONT-FAMILY: "Verdana", "Arial","新宋体", "宋体"
    }
    INPUT {
    FONT-SIZE: 12px; LINE-HEIGHT: 15px; FONT-FAMILY: "Verdana", "Arial","新宋体", "宋体"
    }
    SELECT {
    FONT-SIZE: 12px; LINE-HEIGHT: 15px; FONT-FAMILY: "Verdana", "Arial","新宋体", "宋体"
    }
    P {
    FONT-SIZE: 12px; LINE-HEIGHT: 15px; FONT-FAMILY: "Verdana", "Arial","新宋体", "宋体"
    }
    TEXTAREA {
    FONT-SIZE: 12px; LINE-HEIGHT: 15px; FONT-FAMILY: "Verdana", "Arial","新宋体", "宋体"
    }#all A:active {
    COLOR: #7d070c
    }
    #all A:visited {
    COLOR: #7d070c
    }#all A:hover {
    COLOR: #336699
    }
    #all A:link {
    COLOR: #7d070c
    }
    </STYLE><META content="MSHTML 5.50.4134.600" name=GENERATOR></HEAD>
    <BODY id=all text=#000000 bgColor=#336699>
                
    <script language="JavaScript">hdrFontFamily="Verdana";
    hdrFontSize="2";
    hdrFontColor="white";
    hdrBGColor="#666666";
    linkFontFamily="Verdana";
    linkFontSize="2";
    linkBGColor="white";
    linkOverBGColor="#CCCCCC";
    linkTarget="_top";
    YOffset=60;
    staticYOffset=20;
    menuBGColor="black";
    menuIsStatic="no";
    menuHeader="Main Index"
    menuWidth=250; // Must be a multiple of 5!
    staticMode="advanced"
    barBGColor="#1298fd";
    barFontFamily="Verdana";
    barFontSize="2";
    barFontColor="white";
    barText="MENU";function moveOut() 
    {
    if (window.cancel)
    {
       cancel="";
    } if (window.moving2)
    {
       clearTimeout(moving2);
       moving2="";
    }

    if (ssm2.style.pixelLeft<0) 
    {
    ssm2.style.pixelLeft += (5%menuWidth);
    moving1 = setTimeout('moveOut()', 5)
    }
    else 
    {
    clearTimeout(moving1)
    }
    }function moveBack()
    {
      cancel = moveBack1();
    }function moveBack1()
    {
    if (window.moving1)
    {
    clearTimeout(moving1);
    } if(ssm2.style.pixelLeft>(-menuWidth))
    {
    ssm2.style.pixelLeft -= (5%menuWidth);
    moving2 = setTimeout('moveBack1()', 5);
    }
    else
    {
    clearTimeout(moving2)
    }
    }lastY = 0;function init()
    {
    ssm2.style.pixelLeft = -menuWidth;
    ssm2.style.visibility = "visible";
    }document.write('<DIV ID="ssm2" style="visibility:hidden;Position : Absolute ;Left : 0px ;Top : '+YOffset+'px ;Z-Index : 20;width:1px" onmouseover="moveOut()" onmouseout="moveBack()">');
    tempBar="";for (i=0;i<barText.length;i++)
    {
    tempBar+=barText.substring(i, i+1)+"<BR>"
    }
    document.write('<table border="0" cellpadding="0" cellspacing="1" width="'+(menuWidth+16+2)+'" bgcolor="'+menuBGColor+'"><tr><td bgcolor="'+hdrBGColor+'" WIDTH="'+menuWidth+'">&nbsp;<font face="'+hdrFontFamily+'" Size="'+hdrFontSize+'" COLOR="'+hdrFontColor+'"><b>'+menuHeader+'</b></font></td><td align="center" rowspan="100" width="16" bgcolor="'+barBGColor+'"><p align="center"><font face="'+barFontFamily+'" Size="'+barFontSize+'" COLOR="'+barFontColor+'"><B>'+tempBar+'</B></font></p></TD></tr>');function addItem(text, link, target)
    {
    if (!target)
    {
    target=linkTarget
    }
    document.write('<TR><TD BGCOLOR="'+linkBGColor+'" onmouseover="bgColor=\''+linkOverBGColor+'\'" onmouseout="bgColor=\''+linkBGColor+'\'"><ILAYER><LAYER onmouseover="bgColor=\''+linkOverBGColor+'\'" onmouseout="bgColor=\''+linkBGColor+'\'" WIDTH="100%"><FONT face="'+linkFontFamily+'" Size="'+linkFontSize+'">&nbsp;<A HREF="'+link+'" target="'+target+'" CLASS="ssm2Items">'+text+'</A></FONT></LAYER></ILAYER></TD></TR>')}function addHdr(text)
    {
    document.write('<tr><td bgcolor="'+hdrBGColor+'" WIDTH="140">&nbsp;<font face="'+hdrFontFamily+'" Size="'+hdrFontSize+'" COLOR="'+hdrFontColor+'"><b>'+text+'</b></font></td></tr>')
    }//Only edit the script between HEREaddItem('sdfsdf-', 'http://www.dynamicdrive.com', '');
    addItem('What\'s New', 'http://www.dynamicdrive.com/new.htm', '');
    addItem('What\'s Hot', 'http://www.dynamicdrive.com/hot.htm', '');
    addItem('Forum', 'http://wsabstract.com/cgi-bin/Ultimate.cgi', '');
    addItem('FAQs', 'http://www.dynamicdrive.com/faqs.htm', '');
    addItem('Submit', 'http://www.dynamicdrive.com/submitscript.htm', '');
    addHdr('External Links');
    addItem('Website Abstraction', 'http://wsabstract.com', '_blank');
    addItem('Freewarejava', 'http://freewarejava.com', '_blank');
    addItem('DHTML Zone', 'http://www.dhtml-zone.com/', '_blank');
    addItem('Active-X.com', 'http://www.active-x.com', '_blank');
    addItem('Web Review', 'http://www.webreview.com', '_blank');
    addItem('David\'s Website', 'http://www.david-thurston.co.uk', '_blank');
    // and HERE! No more!document.write('<tr><td bgcolor="'+hdrBGColor+'"><font size="0" face="Arial">&nbsp;</font></td></TR></table>')
    document.write('</DIV>')
    window.onload=init
    </script>
         
    </BODY></HTML>
      

  6.   

    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <title>无标题文档</title>
    </head>
    <script language="JavaScript">
    function pushout()
    { if (window.cancel)
    {
       cancel="";
    } if (window.moveingout2 )
    {
       clearTimeout(moveingout2);
       moving2="";
    } if(menuly.style.pixelLeft>50)
    menuly.style.pixelLeft+=20;
    else if(menuly.style.pixelLeft>30)
    menuly.style.pixelLeft+=10;
    else if(menuly.style.pixelLeft>10)
    menuly.style.pixelLeft+=2;
    else
    menuly.style.pixelLeft+=1;
    if(menuly.style.pixelLeft<0)
    moveingout = window.setTimeout('pushout()',20);
    else
    clearTimeout(moveingout);

    }function resetdiv()
    { if (window.moveingout)
    {
    clearTimeout(moveingout);
    } menuly.style.pixelLeft-=1;
    if(menuly.style.pixelLeft>-176)
    moveingout2 = window.setTimeout('resetdiv()',20);
    else
    clearTimeout(moveingout2); //menuly.style.pixelLeft=-170;
    }
    </script>
    <body><br><div id="menuly" style="position:absolute; left:-176px; top:46px; width:206px; background-color:#66FFFF" onMouseOver="pushout()" onMouseOut="resetdiv()">
    <table width="100%"  border="0" cellpadding="0" cellspacing="1" bordercolor="#000000"  >
      <tr>
        <td width="84%" bgcolor="#FFFFFF">www.sina.com.cn</td>
        <td width="16%" rowspan="6" bgcolor="#6699FF">我们的祖国</td>
      </tr>
      <tr>
        <td bgcolor="#FFFFFF">www.sohu.com</td>
        </tr>
      <tr>
        <td bgcolor="#FFFFFF">www.china.com</td>
        </tr>
      <tr>
        <td bgcolor="#FFFFFF">www.icbc.com.cn</td>
        </tr>
      <tr>
        <td bgcolor="#FFFFFF">www.manuint.com</td>
        </tr>
      <tr>
        <td bgcolor="#FFFFFF">www.crksy.com</td>
        </tr>
    </table>
    </div>
    </body>
    </html>
      

  7.   

    他的代码也有这个问题
    不过就是慢出慢回所以没有表现
    你的直接回去,所以出现你的现象
    你看一下我改的代码应该就能明白了还有这部分代码没有用
    因为menuly.style.pixelLeft范围是-176->+5左右
    if(menuly.style.pixelLeft>50)
    menuly.style.pixelLeft+=20;
    else if(menuly.style.pixelLeft>30)
    menuly.style.pixelLeft+=10;
    else if(menuly.style.pixelLeft>10)
    menuly.style.pixelLeft+=2;
    如果你想加速出
    应该把比较的值重新改一下
    再其他的东西没有看
    不知道你能不能满意,呵呵~~