<div id=menu onmouseout="menuhidden()">
<table>
....
</table>
</div>
故事是这样的
我要想一个菜单<div id=menu>
当我点击菜单让他显示出来的时候
我希望用户鼠标离开这个DIV范围的时候
隐藏掉这个DIV
然后我就在这个DIV添加onmouseout()
---
但当鼠标移到table的时候div也会执行onmouseout事件
因为这时鼠标已经离开div面来到table
---------
请问我要如何实现
当鼠标不在DIV的范围之内时隐藏DIV
<table>
....
</table>
</div>
故事是这样的
我要想一个菜单<div id=menu>
当我点击菜单让他显示出来的时候
我希望用户鼠标离开这个DIV范围的时候
隐藏掉这个DIV
然后我就在这个DIV添加onmouseout()
---
但当鼠标移到table的时候div也会执行onmouseout事件
因为这时鼠标已经离开div面来到table
---------
请问我要如何实现
当鼠标不在DIV的范围之内时隐藏DIV
解决方案 »
- session和cookies问题
- 初学者求一些企业或商业开发的模式和注意事项。
- 这段代码 放在记事本里 可以 运行,放在 vs里没效果 ?
- 隐藏浏览器地址栏方法集锦
- 存储变量问题
- 关于搜索引擎
- 将Datagrid数据传递给父窗口
- RadioButtonList取值
- 哪位高手对showtooltip方法了解,请赐教...
- 子目录下的web.config问题?
- |M| 第三贴:如何让aspx里面的DataSet和string sql可以在他所包含的ascx里面调用 谢谢 在线
- |M| 在VS2005有一个"编排整个文档的格式"这个按钮可以编整个HTML源码,但<script>里面的代码就没有编排 问:如何编排<script>里面的代码
看看孟子的这篇文章
<!--
#div1{
position:absolute;
left:11px;
top:33px;
width:58px;
height:35px;
z-index:1;
background-color: #CCCCCC;
visibility: hidden;
}//层的样式设定
-->
</style>
<script type="text/JavaScript">
<!--
function MM_findObj(n, d) { //v4.01
var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
if(!x && d.getElementById) x=d.getElementById(n); return x;
}function MM_showHideLayers() { //v6.0
var i,p,v,obj,args=MM_showHideLayers.arguments;
for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v=='hide')?'hidden':v; }
obj.visibility=v; }
}
//-->
</script>//显示/隐藏层的函数
</head>
<body>
<button id=button1 onclick="MM_showHideLayers('div1','','show')">菜单</button>//点击显示层
<div id="div1" onmouseover="MM_showHideLayers('div1','','show')" onmouseout="MM_showHideLayers('div1','','hide')"> //层的隐藏
<table>
<tr><td>1111111111</td></tr><tr><td >221111111</td>
</tr><tr>
<td>33111111</td>
</tr></table></div>
---------------------------------------
belldandy11(菜菜虫)
正解
但,太占用CPU了
-------------------------
yourPanel.Style["position"]="absolute";
//以上两个属性也可以在设计器上通过style属性设置。下面的才是关键:
yourPanel.Attributes["onmouseover"]=
"if(this.ttt!=undefined)clearTimeout(this.ttt);this.ttt=setTimeout('"+
yourPanel.ClientID+".style.display=\\'inline\\'',1000)";
yourPanel.Attributes["onmouseout"]=
"if(this.ttt!=undefined)clearTimeout(this.ttt);this.ttt=setTimeout('"+
yourPanel.ClientID+".style.display=\\'none\\'',1000)";
没有任何多余的客户端预定义代码,不需要在mouse移动时进行大量计算。
或者,对于非asp.net的程序,可以这样理解一下:<button id=button1 onclick="div1.style.display='inline'">菜单</button>
<div id="div1" style="position:absolute;background-color: #CCCCCC;display:none"
onmouseover="if(this.ttt!=undefined)clearTimeout(this.ttt);this.ttt=setTimeout('div1.style.display=\'inline\'',1000);"
onmouseout="if(this.ttt!=undefined)clearTimeout(this.ttt);this.ttt=setTimeout('div1.style.display=\'none\'',1000);" >
<table>
<tr><td>1111111111</td></tr><tr><td >221111111</td>
<td>33111111</td>
<td>1111111111</td></tr><tr><td >221111111</td>
</tr>
<tr><td>1111111111</td></tr><tr><td >221111111</td>
<td>33111111</td>
<td>1111111111</td></tr><tr><td >221111111</td>
</tr>
<tr><td>1111111111</td></tr><tr><td >221111111</td>
<td>33111111</td>
<td>1111111111</td></tr><tr><td >221111111</td>
</tr>
</table></div>