使用Dojo1.9如何检查元素是否可见?

使用Dojo1.9如何检查元素是否可见?,dojo,hidden,visible,Dojo,Hidden,Visible,我使用以下代码隐藏或显示字段: 显示元素: style.set(dojo.byId('fTypeId'), 'display', 'block'); 隐藏元素: style.set(dojo.byId('fTypeId'), 'display', 'none'); 如何测试此元素是否显示?请尝试: require(["dojo/dom-style"], function(domStyle){ var isVisible = (domStyle.get("yourNodeId", "d

我使用以下代码隐藏或显示字段:

显示元素:

style.set(dojo.byId('fTypeId'), 'display', 'block');
隐藏元素:

style.set(dojo.byId('fTypeId'), 'display', 'none');
如何测试此元素是否显示?

请尝试:

require(["dojo/dom-style"], function(domStyle){
    var isVisible = (domStyle.get("yourNodeId", "display") !== "none");
});

检查
样式['display']
的方法的问题是,即使元素的'display'属性未设置为'none',您的元素仍可能被隐藏。例如,“可见性”可以是“隐藏的”,“高度”可以是“0”,元素可以被其他元素遮挡,等等。根据我的经验,检查元素的高度比显示更可靠。例如:

var isVisible = document.getElementById("myElem").offsetHeight != 0;

此测试的另一个好处是它不依赖任何框架…

这个答案完全错误!检查给定元素是否具有display==none是非常幼稚的。有数百种情况下,元素可能不可见,最简单的情况是父元素不可见。这个答案被接受会误导游客。我同意。对不起,我的回答有误导性。访客请检查投票最多的一个。您接受的答案在技术上是错误的。参见Igor的答案。我对这个问题投了反对票,因为选择错误的答案会误导人们。这确实是一个更好的解决方案,但你也应该检查
偏移网络宽度
,因为如果一个元素没有宽度,它也不可见。这与jQuery对
:visible
:hidden
选择器()所做的相同。但请注意,与您在回答中提到的不同,当
可见性:隐藏
不透明度:0
时,它仍然可见,因为它们仍然保持其宽度/高度!