隐藏 Div onclick 外部

发布于 2024-11-03 02:45:33 字数 944 浏览 1 评论 0原文

在我的网站上,当用户单击表单时会弹出一个 div。我正在使用 onclick 事件处理程序来显示 div。我希望当用户单击 div 以外的任何位置时 div 隐藏自身。我不能使用 onblur...因为它不适用于 div。有人可以建议替代方案吗?

谢谢。

我的代码如下所示: JavaScript:

function hideDiv() {
    if (document.getElementById) { // DOM3 = IE5, NS6 
        document.getElementById('mydiv').style.visibility = 'hidden';
    }
    else {
        if (document.layers) { // Netscape 4 
            document.mydiv.visibility = 'hidden';
        }
        else { // IE 4 
            document.all.mydiv.style.visibility = 'hidden';
        }
    }
}

function showDiv() {
    if (document.getElementById) { // DOM3 = IE5, NS6 
        document.getElementById('mydiv').style.visibility = 'visible';
    }
    else {
        if (document.layers) { // Netscape 4 
            document.mydiv.visibility = 'visible';
        }
        else { // IE 4 
            document.all.mydiv.style.visibility = 'visible';
        }
    }
}

On my website I have a div that pops up when the user clicks a form. I am using the onclick event handler for the div to appear. I want the div to hide itself when the user clicks anywhere other than on the div. I cant use onblur...because it doesnt work for divs. Can someone suggest an alternative?

Thank you.

Here is what my code looks like:
Javascript:

function hideDiv() {
    if (document.getElementById) { // DOM3 = IE5, NS6 
        document.getElementById('mydiv').style.visibility = 'hidden';
    }
    else {
        if (document.layers) { // Netscape 4 
            document.mydiv.visibility = 'hidden';
        }
        else { // IE 4 
            document.all.mydiv.style.visibility = 'hidden';
        }
    }
}

function showDiv() {
    if (document.getElementById) { // DOM3 = IE5, NS6 
        document.getElementById('mydiv').style.visibility = 'visible';
    }
    else {
        if (document.layers) { // Netscape 4 
            document.mydiv.visibility = 'visible';
        }
        else { // IE 4 
            document.all.mydiv.style.visibility = 'visible';
        }
    }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

给妤﹃绝世温柔 2024-11-10 02:45:33

刚刚找到一个使用 onmouseover / out 事件处理程序的简单解决方案。

仅当变量 mouse_out 为 true 时才会调用 hideDiv() 函数。

var mouse_out;
mydiv.onmouseover = function(){ mouse_out = false }; // mouse is over div
mydiv.onmouseout = function(){ mouse_out = true }; // mouse outside
document.onclick = function(){
   if(mouse_out)
      hideDiv(),   // hides mydiv
      document.onclick = null; // disables next clicks on document
};

它适用于我测试过的所有浏览器,包括 IE 5。
(IE4和NS4我不知道)

Just found an easy solution using onmouseover / out event handler.

hideDiv() function is called only if variable mouse_out is true.

var mouse_out;
mydiv.onmouseover = function(){ mouse_out = false }; // mouse is over div
mydiv.onmouseout = function(){ mouse_out = true }; // mouse outside
document.onclick = function(){
   if(mouse_out)
      hideDiv(),   // hides mydiv
      document.onclick = null; // disables next clicks on document
};

It works on every browser I tested, also IE 5.
(IE4 and NS4 I don't know)

寄意 2024-11-10 02:45:33

我过去处理这类事情的方法是在 div 后面创建一个透明层(使用完全透明的 BG 图像),该层在以下位置具有 CSS:

div#overlay{
  position: fixed;
  width: 100%;
  height: 100%;
  background-image:url('transparent.gif');
  z-index: 1;
}

当然,只有当 Div 出现时,此 div 才“可见”顶部可见。
然后附加一个 onclick 事件处理程序以再次隐藏。

确保您的“弹出 div”的 z-index 至少为 2。

The way I handled those kind of things in the past is create a transparent layer behind the div (use a BG image that is completely transparent) which has CSS somewhere along the lines of:

div#overlay{
  position: fixed;
  width: 100%;
  height: 100%;
  background-image:url('transparent.gif');
  z-index: 1;
}

This div is of course only "visible" when the Div on top is visible.
and then attach an onclick event handler to hide again.

Make sure your "pop-up div" has a z-index of at least 2.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文