1

我的代码中有 4<div>秒。我使用 JavaScript 来显示和隐藏它们。现在它变得越来越难以管理,因此我需要检测一个特定<div>的是否显示或隐藏。我不确定如何做到这一点,用哪种方式编码?JQuery 或 Jqtouch 都可以。谢谢

4

5 回答 5

3

如果您可以使用 jQuery 来帮助您,您可以使用:

$( "yourDivSelector" ).is( ":visible" );

没有 jQuery,你可以这样做:

alert( isVisible( "divOne" ) );
alert( isVisible( "divTwo" ) );
alert( isVisible( "divThree" ) );

function isVisible( elementId ) {
    var element = document.getElementById( elementId );
    return window.getComputedStyle( element, null ).display != "none";
}

jsFiddle:http: //jsfiddle.net/davidbuzatto/N3wf6/

更多关于window.getComputedStyle这里:https ://developer.mozilla.org/en-US/docs/DOM/window.getComputedStyle

于 2012-08-24T15:22:42.133 回答
3

这个功能似乎做你想做的事。它检查不显示和隐藏可见性。

JavaScript 函数检查 DOM 元素的可见性

function isVisible(obj)
{
    if (obj == document) return true

    if (!obj) return false
    if (!obj.parentNode) return false
    if (obj.style) {
        if (obj.style.display == 'none') return false
        if (obj.style.visibility == 'hidden') return false
    }

    //Try the computed style in a standard way
    if (window.getComputedStyle) {
        var style = window.getComputedStyle(obj, "")
        if (style.display == 'none') return false
        if (style.visibility == 'hidden') return false
    }

    //Or get the computed style using IE's silly proprietary way
    var style = obj.currentStyle
    if (style) {
        if (style['display'] == 'none') return false
        if (style['visibility'] == 'hidden') return false
    }

    return isVisible(obj.parentNode)
}

示例用法

if (isVisible(document.getElementById("myelement"))) {
    // Element is visible.
}

演示

于 2012-08-24T15:34:10.490 回答
1

因为我不确定 100% 你在做什么隐藏/显示......

但是如果您设置一个属性,例如显示

然后..

function elementhidden()
{
    1. Get your element
    2. Check the elemnet atrribute status
    3. If its hide value then return true
    4. If its show value then return false

}

提供一个你在做什么的例子,这样我就可以编写代码了..

于 2012-08-24T15:24:52.687 回答
0

您可以使用document.elementFromPoint(x, y)作为 x 和 y 传递 div 的位置并检查它是否是好对象。

这假设没有其他元素覆盖 div 的左上角。

这可能取决于您所说的“可见”:“完全可见”?“至少有点可见”?由于滚动位置而不可见的视口部分怎么办?如果浏览器窗口部分位于屏幕之外(这可能很棘手)?

于 2012-08-24T15:26:41.123 回答
-1

取决于 div 的隐藏方式,但您可以使用

if(document.getElementById("myDiv").style.display=="none"){
    //do something
}
于 2012-08-24T15:27:27.030 回答