关于onclick事件的问题

dhq314 2008-10-29 01:53:59
我想实现一个类似下拉框select的功能,就是单击按钮显示,再单击就隐藏,如下代码,但是当okdisplay==true时,怎么实现无论点击网页任何地方,dobj就隐藏起来呢?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<style type="text/css">
<!--
div{
border:1px solid #BCCBFE;
}
#newselect{
margin:10px auto;
width:100px;
height:20px;
font:14px/20px "宋体";
text-align:center;
cursor:pointer;
position:relative;
}
#dropdiv{
width:100px;
height:150px;
position:absolute;
top:20px;
left:-1px;
}
-->
</style>
<script type="text/javascript">
<!--
var okdisplay = false;
window.onload=function(){
var sobj=document.getElementById("newselect");
var dobj=document.getElementById("dropdiv");
sobj.onclick=function(){
if (okdisplay == false){
okdisplay = true;
dobj.style.display="block";
}
else if (okdisplay == true){
okdisplay = false;
dobj.style.display="none";
}
}
}
//-->
</script>
</head>
<body>
<div id="newselect">test
<div id="dropdiv" style="display:none;">something</div>
</div>
</body>
</html>

...全文
97 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
wtcsy 2008-10-29
  • 打赏
  • 举报
回复
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<style type="text/css">
<!--
div{
border:1px solid #BCCBFE;
}
#newselect{
margin:10px auto;
width:100px;
height:20px;
font:14px/20px "宋体";
text-align:center;
cursor:pointer;
position:relative;
}
#dropdiv{
width:100px;
height:150px;
position:absolute;
top:20px;
left:-1px;
}
-->
</style>
<script type="text/javascript">
<!--
document.onclick =function(){
if(okdisplay==false) return;
document.getElementById("dropdiv").style.display="none"
okdisplay = false
}
var okdisplay = false;
window.onload=function(){
var sobj=document.getElementById("newselect");
var dobj=document.getElementById("dropdiv");
sobj.onclick=function(e){
e =e || event
e.cancelBubble=true
if (okdisplay == false){
okdisplay = true;
dobj.style.display="block";
}
else if (okdisplay == true){
okdisplay = false;
dobj.style.display="none";
}
}
}
//-->
</script>
</head>
<body>
<div id="newselect">test
<div id="dropdiv" style="display:none;">something</div>
</div>
</body>
</html>

要加一个阻止事件冒泡的事件才行
e =e || event
e.cancelBubble=true
wangruibaobei 2008-10-29
  • 打赏
  • 举报
回复

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<style type="text/css">
<!--
div{
border:1px solid #BCCBFE;
}
#newselect{
margin:10px auto;
width:100px;
height:20px;
font:14px/20px "宋体";
text-align:center;
cursor:pointer;
position:relative;
}
#dropdiv{
width:100px;
height:150px;
position:absolute;
top:20px;
left:-1px;
}
-->
</style>
<script type="text/javascript">
<!--
var okdisplay = false;
window.onload=function(){
var sobj=document.getElementById("newselect");
var dobj=document.getElementById("dropdiv");
sobj.onclick=function(){
if (okdisplay == false){
okdisplay = true;
dobj.style.display="block";
}
else if (okdisplay == true){
okdisplay = false;
dobj.style.display="none";
}
}
sobj.onblur=function(){
if (okdisplay == true){
okdisplay = false;
dobj.style.display="none";
}
}
}
//-->
</script>
</head>
<body>
<div id="newselect">test
<div id="dropdiv" style="display:none;">something</div>
</div>
</body>
</html>

MOTA 2008-10-29
  • 打赏
  • 举报
回复
document.body.onclick=function(){alert("我出现在所有地方哦");}

87,910

社区成员

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

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