2010-02-19 13 views
2

왜 작동하지 않습니까? 요소가 display CSS 스타일인지 확인해야합니다.왜이 style.display가 작동하지 않습니까?

if (byId("annonsera_price").style.display=='inline' || byId("annonsera_price").style.display=='block'){ 
alert ("Hello"); 
} 

function byId(x){ 
     return document.getElementById(x); 
} 

갱신 2 : 나도 CSS로를 설정하지 않은

<input style="width:100px;" type="text" name="annonsera_price" id="annonsera_price"> 

!

+0

를, 무엇을 작동하지 않는 것은 경고 상자가 표시되지 않는 것입니다 디스플레이가 실제로 '블록'으로 설정 되었더라도! –

+1

byID ("annonsera_price"). style.display가 "블록"을 반환합니까? – Laserson

+0

아니요, 빈 경고 상자를 반환합니다! –

답변

3

우선 단지 style.display를 경고 시도가 포함 된 내용을 참조하십시오

var el = document.getElementById("annonsera_price"); 
alert(el.style.display); 

style 만 (스타일 속성에 JS를 통해 또는 설정) 스타일 속성에 무엇을 참조합니다. 디스플레이가 클래스를 통해 설정되었을 수 있으므로 el.style.display에 아무 것도 표시되지 않습니다.

[업데이트] : style.display "가"가 아닌 "인라인"또는 "블록"이 때문에 업데이트를 감안할 때, 아무 경고가 발생하지 않는 이유입니다. style 특성이나 .style.display 중 하나를 설정하기 전까지는 "인라인"또는 "블록"이되지 않습니다. 스타일은 CSS를 통해 설정하거나 기본 스타일 인 경우

+0

if 문에서 사용할 수 있습니다. 그 이유는 그것이 무엇이 반환되는지 알려주려는 이유입니다. 내 요소를 설정하면 코드가 작동합니다. 우리는 당신이 다루고있는 요소가 무엇인지 찾아야합니다. – Nicole

+0

내가 틀렸어. 내가 css로 설정하지 않았어. 업데이트를 확인해라. –

+0

경고는 공백의 경고 박스를 돌려 준다. .. 가치 없음! –

5

, 당신은 요소의 계산 된 스타일을 얻을 필요가 : Btw는

var el = document.getElementById("annonsera_price"); 

// currentStyle for IE, getComputedStyle for standards-compliant browsers 
var style = el.currentStyle || window.getComputedStyle(el); 

if (style.display == "inline" || style.display == "block") 
    alert("Hello"); 
+0

재미 있습니다. 나는 이것을 찾기 위해 항상 FireBug 나 IEDevtoolbar와 같은 도구를 사용하지만, 코드를 통해 어떻게하는지 항상 알기 때문에 좋다. – SBUJOLD

관련 문제