如何实现点击弹出层以外关闭弹出层?

derek_leng 2011-12-09 02:33:16
具体的问题是这样的:
我现在点击一个按钮弹出隐藏层了,但是我想要在点击弹出层以外的地方关闭这个弹出层,而且在弹出层上面的各种按钮、超链接、checkbox都可以正常使用。
html代码如下:(问题在于我点击弹出层中的某些地方它也会关闭)

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>close div</title>
</head>
<body>
<script type="text/javascript">
function openWin(evt,o){
evt.stopPropagation?evt.stopPropagation():evt.cancelBubble=true;
var o = document.getElementById(o);
//alert("open: "+o.id);
o.style.display = "";
}
function closeWin(evt,o){
evt.stopPropagation?evt.stopPropagation():evt.cancelBubble=true;
var o = document.getElementById(o);
//alert("close: "+o.id);
o.style.display = "none";
}
document.onclick=function(){closeWin(event,'outside_div');}
</script>
<table style="text-align: left; margin-left: auto; margin-right: auto; width: 900px;">
<tbody>
<tr valign="middle" id="selPackage" style="background-color: rgb(204, 204, 255);">
<td> </td><td> </td><td> </td>
<td align="right" width=250><span><nobr>
Package 
<input type="button" id="packBtn" style="width: 80px;height: 30px;position: absolute;cursor: pointer;" value="open" onclick="openWin(event,'outside_div');" />
<div id="outside_div" style="display: none;" onclick="openWin(event,'outside_div');">
<div align="left" style="float: left;font: bold;font-size: x-small;">Package Code</div>
<div id="closeBtn_div" onclick="closeWin(event,'outside_div')" >[ X ]</div>
<div id="selections_div" align="left">
<ul style="list-style: none;float: left;margin-top: 15px;">
<li><input id="" name="chpack" value="19.2BC" type="checkbox"/>19.2BC</li>
<li><input id="" name="chpack" value="ALL" type="checkbox"/>ALL</li>
<li><input id="" name="chpack" value="EMAIL" type="checkbox" checked="checked"/>EMAIL</li>
<li><input id="" name="chpack" value="FV32" type="checkbox" checked="checked"/>FV32</li>
<li><input id="" name="chpack" value="IQ" type="checkbox" checked="checked"/>IQ</li>
</ul>
<ul style="float: right;margin-top: 15px;margin-right: 30px;">
<li><input id="" name="chpack" value="IWP" type="checkbox" checked="checked"/>IWP</li>
<li><input id="" name="chpack" value="M101" type="checkbox" checked="checked"/>M101</li>
<li><input id="" name="chpack" value="SV32" type="checkbox" checked="checked"/>SV32</li>
<li><input id="" name="chpack" value="TEST" type="checkbox" checked="checked"/>TEST</li>
</ul>
</div>
<div id="div4" align="center">
<input id="selAllPack" style="width: 50px;" type="button" value="All" onclick="selOrDeselAll(this.value);"/> 
<input id="resetPack" style="width: 50px;" type="button" value="Reset" onclick="resetSel();" /> 
<input id="okPack" style="width: 50px;" type="button" value="OK" onclick="completeSel();" />
</div>
</div>

</nobr></span></td>
</tr>
</tbody>
</table>
</body>
</html>
...全文
237 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
derek_leng 2011-12-12
  • 打赏
  • 举报
回复
已经搞定了,谢谢!
qq307023807 2011-12-09
  • 打赏
  • 举报
回复

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>close div</title>
</head>
<body>
<script type="text/javascript">
function openWin(evt,o){
evt.stopPropagation?evt.stopPropagation():evt.cancelBubble=true;
var o = document.getElementById(o);
// alert("open: "+o.id);
o.style.display = "";
}
function closeWin(evt,o){
evt.stopPropagation?evt.stopPropagation():evt.cancelBubble=true;
var div = document.getElementById(o);
//alert("close: "+o.id);



if(evt.srcElement.parentNode.id!="selPackage"){

div.style.display = "none";
}
}
document.onclick=function(){closeWin(event,'outside_div');}
</script>
<table style="text-align: left; margin-left: auto; margin-right: auto; width: 900px;">
<tbody>
<tr valign="middle" id="selPackage" style="background-color: rgb(204, 204, 255);">
<td> </td><td> </td><td> </td>
<td align="right" width=250><span><nobr>
Package 
<input type="button" id="packBtn" style="width: 80px;height: 30px;position: absolute;cursor: pointer;" value="open" onclick="openWin(event,'outside_div');" />
<div id="outside_div" style="display: none;" onclick="openWin(event,'outside_div');">
<div align="left" style="float: left;font: bold;font-size: x-small;">Package Code</div>
<div id="closeBtn_div" onclick="closeWin(event,'outside_div')" >[ X ]</div>
<div id="selections_div" align="left">
<ul style="list-style: none;float: left;margin-top: 15px;">
<li><input id="" name="chpack" value="19.2BC" type="checkbox"/>19.2BC</li>
<li><input id="" name="chpack" value="ALL" type="checkbox"/>ALL</li>
<li><input id="" name="chpack" value="EMAIL" type="checkbox" checked="checked"/>EMAIL</li>
<li><input id="" name="chpack" value="FV32" type="checkbox" checked="checked"/>FV32</li>
<li><input id="" name="chpack" value="IQ" type="checkbox" checked="checked"/>IQ</li>
</ul>
<ul style="float: right;margin-top: 15px;margin-right: 30px;">
<li><input id="" name="chpack" value="IWP" type="checkbox" checked="checked"/>IWP</li>
<li><input id="" name="chpack" value="M101" type="checkbox" checked="checked"/>M101</li>
<li><input id="" name="chpack" value="SV32" type="checkbox" checked="checked"/>SV32</li>
<li><input id="" name="chpack" value="TEST" type="checkbox" checked="checked"/>TEST</li>
</ul>
</div>
<div id="div4" align="center">
<input id="selAllPack" style="width: 50px;" type="button" value="All" onclick="selOrDeselAll(this.value);"/> 
<input id="resetPack" style="width: 50px;" type="button" value="Reset" onclick="resetSel();" /> 
<input id="okPack" style="width: 50px;" type="button" value="OK" onclick="completeSel();" />
</div>
</div>

</nobr></span></td>
</tr>
</tbody>
</table>
</body>
</html>


87,902

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧