2013-07-08 83 views
3

我隱藏或顯示字段下面的代碼:使用Dojo 1.9如何檢查元素是否可見?

顯示元素:

style.set(dojo.byId('fTypeId'), 'display', 'block'); 

隱藏元素:

style.set(dojo.byId('fTypeId'), 'display', 'none'); 

如何測試,如果這個元素呈現?

+0

你接受的答案是技術上** **錯誤。看到伊戈爾的答案。我低估了這個問題,因爲提出錯誤的答案會誤導人們。 –

回答

1

嘗試:

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

好又簡單!我喜歡它...... –

+5

這個答案簡直是錯誤的** **檢查給定元素是否顯示==無太天真。有數百種情況下,元素可能是不可見的,父母不可見的最簡單的情況。這個答案被接受誤導遊客。 –

+0

我同意。對不起,誤導性的答案。遊客請檢查最上面的一個。 – Philippe

15

與檢查style['display']的方法的問題是,你的元素仍然可以被隱藏,即使它的「顯示」屬性設置爲「無」。例如,「可見度」可能是「隱藏的」,「高度」可能是「0」,元素可能會被其他元素遮擋等等。根據我的經驗,檢查元素的高度而不是顯示更加可靠。例如:

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

這個測試有額外的好處,它不依賴於任何框架...

+0

這確實是一個更好的解決方案,但是您也應該檢查'offsetWidth',因爲如果一個元素沒有寬度,它也不可見。這與jQuery爲':visible'和':hidden'選擇器所做的一樣(https://github.com/jquery/jquery/blob/master/src/css/hiddenVisibleSelectors.js)。但請注意,與您在答案中提到的不同,當「visibilty:hidden」或「opacity:0」仍然可見時,它們仍然可見,因爲它們仍然保持其寬度/高度! – g00glen00b