使用JavaScript检查元素的可见性。

10

我有一个叫做object的变量。如何使用JavaScript检查它是否可见?

我尝试过!object.getAttribute("dislay", "none"),但是并没有起作用。

请问有人可以帮忙吗?

谢谢!


2
这个回答解决了你的问题吗?检查元素在DOM中是否可见 - Mahozad
6个回答

21
function isvisible(obj) {
  return obj.offsetWidth > 0 && obj.offsetHeight > 0;
}

因为它是在JQuery中实现的。


11
如果您使用jQuery,以下代码将返回一个布尔值来表示该对象是否可见:
$(object).is(':visible');

如果没有,您可以尝试以下方法:

if (object.style['display'] != 'none')

但是这仅适用于在此对象上明确设置了display:none的情况。


尽管我通常反对在每个JavaScript问题下都使用jQuery,特别是在渲染问题上,但在我看来,为了使它至少显着改进,重新发明轮子并不值得。 - Horst Gutmann

2
为了使用javascript获取显示样式的值,您可以使用以下方法:
IE:
document.getElementById('mydiv').currentStyle.display
or
object.currentStyle.display

其他:

document.getElementById('mydiv').getComputedStyle('display')
or
object.getComputedStyle('display')

1
使用这个代码,我得到了以下错误信息:"Uncaught TypeError: Object #<HTMLDivElement> has no method 'getComputedStyle'"。 - Luis A. Florit

1
if (object.style.visibility <> 'visible' || object.style.display == 'none') 

如果它不起作用,尝试使用。
 if (object.currentStyle.visibility <> 'visible' || object.currentStyle.display == 'none')

1
我搜索了一下,找不到“<>”语法的解释。从上下文来看,我猜测它用于测试不等式,但为什么不直接使用“!=”呢?这是有什么不同的作用吗? - Addem

0

以下是可运行版本:http://jsfiddle.net/PEA4j/

<html>
<head>
    <script src="http://ajax.aspnetcdn.com/ajax/jquery/jquery-1.4.4.min.js" type="text/javascript"></script>
    <script type="text/javascript">
        $(function () {
            alert("Is #foo1 visible: " + $("#foo1").is(":visible") + "\nIs #foo2 visible: " + $("#foo2").is(":visible"));

        });
    </script>
</head>
<body>
<div id="foo1" style="display:none">foo1 display none</div>
<div id="foo2">foo2 no display property;</div>
</body>
</html>

0

看起来你没有正确使用getAttribute方法。尝试查看this


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接