2013-07-08 4 views
3

내가 숨기거나 다음 코드를 사용하여 필드를 보여Dojo 사용하기 1.9 요소가 표시되는지 어떻게 확인합니까?

표시 요소 :

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

숨기기 요소 :

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

이 요소가 표시되어있는 경우에 어떻게 테스트 할 수 있습니까?

+0

**있다. 이고르의 대답을보십시오. 나는 잘못된 대답을 주워 사람들을 속일 것이기 때문에 질문을 downvoting거야. –

답변

1

시도 : style['display'] 확인과 접근 방식

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

멋지고 간단합니다! 나는 그것을 좋아한다 ... –

+5

이 대답은 간단히 ** 틀렸다! ** 주어진 원소가 display == none을 가지고 있는지를 검사하는 것은 매우 순진하다. 요소가 보이지 않을 수도있는 수백 가지 경우가 있는데, 부모가 보이지 않는 가장 단순한 요소입니다. 이 대답은 방문자를 오도하는 것으로 받아 들여지고 있습니다. –

+0

동의합니다. 오해의 소지가있는 답변 죄송합니다. 방문자는 가장 upvoted 하나를 대신 확인하십시오. – Philippe

15

문제는 당신의 요소가 여전히 '표시'속성이 '없음'으로 설정되어 있지 않습니다, 비록 숨겨져있을 수 있다는 것이다. 예를 들어 '가시성'은 '숨김', '높이'는 '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