JAVASCRIPT 当鼠标移开时 已弹出子菜单自动消失

<html>
<head>
<style type="text/css">
.menu
{
background-color:green;
width:120;
height:20;
color: white;
text-align: center;
font-size:9pt;
font-weight:bolder;
}
.submenu
{
position:absolute;
top:40;
background-color:
yellow;width:180;
font-size:9pt;
}
</style>
</head>

<body>
<SCRIPT>
var cm=null;
document.onclick = new Function("show(null)")
function getPos(el,sprop)
{var iPos = 0
while (el!=null)
{iPos+=el["offset" + sprop]
el = el.offsetParent}
return iPos}
function show(el,m)
{if (m) { m.style.display='';
m.style.pixelLeft = getPos(el,"Left")
m.style.pixelTop = getPos(el,"Top") + el.offsetHeight}
if ((m!=cm) && (cm)) cm.style.display='none';cm=m}
</SCRIPT>

<table border=0>
<tr>
<td ID="d1" onmouseover="show(this,ds1);" class="menu">杂志技术站点</td>
<td ID="d2" onmouseover="show(this,ds2);" class="menu">门户站点</td>
<td ID="d3" onmouseover="show(this,ds3);" class="menu">个人收藏站点</td>
</tr>
</table>

<DIV ID="ds1" CLASS="submenu" STYLE="display:none" onmouseout="hide(this)">
<BR><A HREF="http://www.yesky.com">天极网 Yesky.com</A>
<BR><A HREF="http://www.cbinews.com">电脑商情报</A>
<BR><A HREF="http://www.newsoft.com.cn">新潮电子</A>
<BR>
</DIV>
<DIV ID="ds2" CLASS="submenu" STYLE="display:none" onmouseout="hide(this)">
<BR><A HREF="http://www.sina.com.cn">新浪网 Sina</A>
<BR><A HREF="http://www.sohu.com.cn">搜狐 Sohu</A>
<BR><A HREF="http://www.163.com">网易 Netease</A>
<BR>
</DIV>
<DIV ID="ds3" CLASS="submenu" STYLE="display:none" onmouseout="hide(this)">
<BR><A HREF="http://haoel.yeah.net">耗子网络编程站</A>
<BR><A HREF="http://www.5460.net">中国同学录</A>
<BR><A HREF="http://www.csdn.net">中国软件开发网</A>
<BR>
</DIV>
</body>
</html>

以上是一段我从网上看到的JAVASCRIPT的代码.可以实现一个鼠标移动到文字上时,可自动弹出子菜单的功能.但我试过后,发现鼠标离开文字区域时,已弹出子菜单,如果不在其它空白位置单击的话,该子菜单不能收回.请问有代码可以实现让子菜单在鼠标移离文字的时候就自动消失吗~?
谢谢keiu的回答,不好意思的补充一下.我指的是.鼠标移离菜单和子菜单区域后,子菜单自动消失,可以的话.再请教一下.谢谢

我给你讲一下做法吧,
菜单和子菜单都加onmouseout函数,当鼠标移开的时候,调用一个函数,在这个函数里有个setTimeout执行隐藏div的函数,需要给子菜单加上个onmouseover 然后在响应函数里加clearTimeout,把之前的setTimeout给清除!
<script>
var hideFlag;
function hideDiv(id){
hideFlag=setTimeout(function(){
document.getElementById(id).style.display="none";
},200);
}
function wait(){
clearTimeout(hideFlag);
}
</script>
<td ID="d1" onmouseover="show(this,ds1);"onmouseout="hideDiv('ds1')" class="menu">杂志技术站点</td>

<DIV ID="ds3" CLASS="submenu" STYLE="display:none" onmouseout="hide(this)"onmouseover="wait()">
<BR><A HREF="http://haoel.yeah.net">耗子网络编程站</A>
<BR><A HREF="http://www.5460.net">中国同学录</A>
<BR><A HREF="http://www.csdn.net">中国软件开发网</A>
<BR>
</DIV>
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-07-29
将这句代码 :
onmouseout="hide(this)"
换成:
onmouseleave="this.style.display='none'" 就好了

一共有三处 ,都换过来本回答被提问者采纳
第2个回答  2010-07-28
代码好像没错 如果要让离开都能消失那可以在<Script></Script>中加入以下代码 不过这样新的问题又出来了 你可以试试 我认为程序是正确的 因为要确保用户能选择上

function hide(t)
{
t.style.display='none';
}

JAVASCRIPT 当鼠标移开时 已弹出子菜单自动消失
菜单和子菜单都加onmouseout函数,当鼠标移开的时候,调用一个函数,在这个函数里有个setTimeout执行隐藏div的函数,需要给子菜单加上个onmouseover 然后在响应函数里加clearTimeout,把之前的setTimeout给清除! var hideFlag;function hideDiv(id){ hideFlag=setTimeout(function(){ document.getElementBy...

Jquery问题,hover(function()已经显示出了子菜单,但是我鼠标一...
一般使用设置延迟处理,然后在显示子菜单也加上hover事件:$(function(){$(".subnav").hide();var _timeout;$('.v-show').hover(function(){clearTimeout(_timeout);$('.subnav').show();},function(){_timeout=setTimeout(function(){$('.subnav').hide();},500)});\/\/内容也做...

请问:鼠标移到上面就弹出小框(其它网页内容),移开就关闭.如何做?谢谢...
用的是css和JavaScript,只要你给你要这样做的网页元素设置上mouseHover事件和mouseOut事件然后在这两个事件里给你的要弹出的框设置css,也就是在鼠标没过来时候让小框隐藏,Hover的时候让隐藏属性取消就可以了,提示到这,具体的随便查查css和JavaScript的手册就可以做到了,再多说就没意思了,就跟看电影...

javascript或者PHP如何实现鼠标放在图片上就弹出另一个程序,鼠标离开时...
function () { \/\/在这里写鼠标移上去的代码 },function () { \/\/在这里写鼠标移走的代码 } );

JS菜单延迟消失(同等级鼠标移动,立即消失,进入下一集子菜单,鼠标移开延...
可以直接吧延迟的参数写在hide里面啊 hide(slow)或者hide(1000)settimeout是延迟1秒钟再去执行动画,所以你移出当前移入其他的时候stop这个还是要等1秒钟才执行的 非要用settimeout 那就要用一个变量 var timer = settime。。。然后第一个function里面,要clearTimeout(timer)

javascript鼠标移入移出事件
两种办法:2级菜单要紧挨着1级菜单,至少有一部分是相连的,这样鼠标沿着相连的部分移动,就不会让2级菜单自动隐藏了;或者在1级菜单的mouseout事件中,不要立刻让2级菜单隐藏,而是延迟一段时间再隐藏,比如 var t = setTimeout("2级菜单.style.display='none'",1000); ,这样的话,只要在1秒内...

如何通过JAVASCRIPT实现,当鼠标移动到一个DIV内时,DIV显示,当鼠标移...
这样是不行D,display是让该控件不显示,而不是隐藏,所以display='none'时,页面上根本不存在该DIV,故不能触发 如果你另外用一个按钮什么的触发就行了

关于js的鼠标移入移出事件
} 在处理鼠标移出效果时,若遇到嵌套div结构的问题,即鼠标似乎误触发了移出事件,可以通过以下方法解决:当存在多层div嵌套时,直接使用onmouseover和onmouseout可能频繁触发事件。为避免误触发,推荐使用onmouseenter和onmouseleave。这两组事件的区别在于:mouseover与mouseenter:鼠标移动至被选元素或其子元素...

jquery的下拉菜单,鼠标移动到子菜单,没移动到最下面,它就自动收缩回去...
把script部分换成下面代码 $(function(){$('.subnav').hide();$('#menu li').hover(function(){ $(this).find('.subnav').show();}, function() {});$('.subnav').hover(function(){},function(){ $(this).hide();});}); ...

如何实现鼠标移入时,显示div中的文字呢?
1、需要结合JavaScript实现,首先打开sublime text编辑器,新建一个html文件,写入一个标签和弹出层div,分别设置它们的鼠标移入和移出事件;最后简单的设置两个html标签的样式,让弹出层默认隐藏,设置弹出层的大小背景等属性:2、接着在下方的script标签设置两个函数,一个是鼠标移入时触发用来显示div,另...

相似回答
大家正在搜