就是很多留言每个留言都有回复连接 点击后显示回复对话框 点别的区域消失 ,就和平时网站上的一样,一次只显示一个回复留言框...不知道 怎么下手, 只能点开 不能点击别的区域关闭....
第一步:在js中定义一个变量用来保存鼠标是否在div中这个状态:var isOut=true;(默认不再区域中)
第二步:在div中加上onmouseover和onmouseout事件,用来控制变量isOut:
<div id="codediv" onmouseover="isOut=false" onmouseoout="isOut=true"/>
第三步:在显示div的事件中加入取消事件冒泡的语句:(因为这个事件也会触发document.onmousedown)
event.cancelBubble=true;
第四步:为document添加onmousedown事件:
document.onmousedown=function(){
var codediv=document.getElementById("codediv");
if(codediv.style.display!="none" && isOut){
codediv.style.display!="none";
}
}这个是找的一个解决办法 可是没反应 能不能解释一下,我把他简化
document.onmousedown=function(){
var codediv=document.getElementById("codediv");
if(codediv.style.display!="none"){
codediv.style.display="none";
}
就是不管点哪里都关闭...<div id="codediv" onmouseover="isOut=false" onmouseoout="isOut=true"/>
div里貌似没有这两个事件...
求解法...
第一步:在js中定义一个变量用来保存鼠标是否在div中这个状态:var isOut=true;(默认不再区域中)
第二步:在div中加上onmouseover和onmouseout事件,用来控制变量isOut:
<div id="codediv" onmouseover="isOut=false" onmouseoout="isOut=true"/>
第三步:在显示div的事件中加入取消事件冒泡的语句:(因为这个事件也会触发document.onmousedown)
event.cancelBubble=true;
第四步:为document添加onmousedown事件:
document.onmousedown=function(){
var codediv=document.getElementById("codediv");
if(codediv.style.display!="none" && isOut){
codediv.style.display!="none";
}
}这个是找的一个解决办法 可是没反应 能不能解释一下,我把他简化
document.onmousedown=function(){
var codediv=document.getElementById("codediv");
if(codediv.style.display!="none"){
codediv.style.display="none";
}
就是不管点哪里都关闭...<div id="codediv" onmouseover="isOut=false" onmouseoout="isOut=true"/>
div里貌似没有这两个事件...
求解法...
解决方案 »
- 如何在javascript中带二个参数传再接受值???急!!!!请各位老大帮忙看一下
- 如何获取滚动条当前的位置?
- 求助~!! 高手们帮帮我~!
- 高手请进!!document.getElementById()和document.getElementsByName()的区别
- 有人用过 ,YUI(Yahoo! User Interface Library)吗? 请问怎么使用 ,
- 鍦╦avascript 涓浣曟帶鍒惰〃鍗曚腑鏌愪釜灞炴€т负readonly?
- 大家跪下谢我吧!我把SUN的《AJAX与J2EE》全文译了(原创)!!!
- new ActiveXObject 提示错误:Automation server can't create object
- 呵呵,一个菜鸟问题,送分
- rsa加密是都统一的吗?
- 如何实现此种文本框???
- js 判断上传的二进制文件大小
然后点击其他元素的时候 #message 隐藏 ,可以试试 onblur 事件,支持div标签的http://www.w3school.com.cn/htmldom/event_onblur.asp
判断被鼠标按下时的元素 的所有父元素中是否包含了codediv,没有包含则可以知道鼠标是在codediv之外单击的,则隐藏。还是jquery给力啊,给个jquery实例供参考:$(document).mouseup(function(event){
if($(event.target).parents("#codediv").length==0){
$("#codediv").hide();
}
})
突然发现那个onmouseout给的代码是错的...==!
改完 加了个window.onload 事件初始化了一下isOut能用了...
...囧 看不懂...= =!木有知道jquery...
var codediv=document.getElementById("codediv");
if(codediv.style.display!="none"){
codediv.style.display="none";
}
这句话的意思,是给页面绑定个鼠标按下事件,此事件是 如果ID为codediv的元素不是隐藏的就让它隐藏。
<HTML>
<HEAD>
<TITLE> New Document </TITLE> </HEAD> <BODY>
<div>
<a href="#" onclick="document.getElementById('codediv').style.display = '';">单击此处弹出窗口</a>
任意弹窗外单击会隐藏
<div id="b" style="padding:100px;border:1px solid red"> <div id="codediv" style="display:none;border:1px solid green;padding:50px;">
<div>假设这是一个弹窗</div>
<textarea style="width:400;height:400">留言</textarea>
</div>
</div>
</div> </BODY>
</HTML>
<script>
function parents(elem,findId){
if(elem.id == findId){
return true;
}
while(elem.parentNode){
elem = elem.parentNode;
if(elem.id == findId){
return true;
}
}
return false;
} document.body.onmouseup = function(event){
event = event ? event.target : window.event.srcElement;
if(!parents(event,'codediv')){
document.getElementById('codediv').style.display = 'none';
}
}</script>
上面写的不会牵扯 冒泡问题,由于对原生态js也不是太熟。请参考
灰常感谢 diyle 提供的代码~~
不过我把那个调试好了~~
还要对js好好看看 囧了个去的...表示连对象都不知道 = =!
哎 要加油了...