JavaScript로 DIV를 표시하고 숨기는 방법


113

다음과 같이 할 수 있습니까?

function showDiv()
{
    [DIV].visible = true;
    //or something
}

1
왜 Jquery를 사용하지 않습니까? .hide ()?
coderama 2012

div의 이름으로 사용할 수 test.hide()있습니까? 그래서 div의 이름이 test이면 사용할 수 있습니까?

8
@JackStone : 아니요, 이미 jQuery 라이브러리를 사용하고있는 경우에만 해당됩니다. 어떤 사람들은 모든 JavaScript 질문에서 그것을 홍보하고 싶어합니다. 그래도 .hide()가시성을 설정하지 않습니다. 디스플레이를 설정합니다.

6
@am not 나는 jQuery가 정말 훌륭하고 모든 것을 수행 한다는 것을 분명히 이해하지 못했습니다 . (이미지 출처)
Pekka 2012

8
이와 같은 경우 좋은 답변에는 일반 JS 솔루션과 라이브러리 사용 의 이점 을 보여주는 솔루션이 모두 포함되어야합니다 .이 경우 요소를 표시하는 데 사용할 때 인라인 대 블록 을 처리 할 필요가 없습니다 display.
ThiefMaster 2012

답변:


139

[DIV]가 요소이면

[DIV].style.visibility='visible'

또는

[DIV].style.visibility='hidden' 

16
visibility요소가 차지하는 공간이 예약 된 상태로 유지된다는 부작용이 있습니다. 그것은 OP가 원하는 것일 수도 있고 아닐 수도 있습니다
Pekka

1
[DIV]라고 적힌 곳에 내 div의 이름을 입력할까요?

20
아니요, document.getElementById('id-of-the-div')대신 사용[DIV]
ThiefMaster

@JackStone : div의 "이름"이 의미하는 바에 따라 다릅니다. div를 참조하는 변수이면 그렇습니다.

1
그래서 내 div가 이름 testdiv이라면 document.getElementById('testdiv').style.visibility = 'hidden';?

124

jQuery와 같은 라이브러리를 사용하지 않는다고 가정 해 보겠습니다.

DOM 요소에 대한 참조가 아직없는 경우 다음을 사용하여 가져옵니다. var elem = document.getElementById('id');

그런 다음 해당 요소의 CSS 속성을 설정할 수 있습니다. 표시 / 숨기기 위해 약간 다른 효과가있는 display및 두 가지 속성을 사용할 수 있습니다 visibility.

조정 style.display은 요소가 전혀 존재하지 않는 것처럼 보입니다 ( "제거됨").

elem.style.display = 'none'; // hide
elem.style.display = 'block'; // show - use this for block elements (div, p)
elem.style.display = 'inline'; // show - use this for inline elements (span, a)

또는 style.visibility실제로 div가 여전히 존재하지만 "모두 비어 있음"또는 "모두 흰색"이되도록합니다.

elem.style.visibility = 'hidden'; // hide, but lets the element keep its size
elem.style.visibility = 'visible';

jQuery를 사용하는 경우 display속성 을 설정하려는 한 더 쉽게 할 수 있습니다 .

$(elem).hide();
$(elem).show();

자동으로 적절한 display값을 사용합니다 . 요소 유형 (인라인 또는 블록)에 대해 신경 쓸 필요가 없습니다. 또한, elemDOM 요소 일뿐만 아니라 #id또는 .class유효한 CSS3 (및 그 이상!)과 같은 선택자가 될 수 있습니다 .


나는 당신의 대답을 선호하지만 elem.style.display = 'none'을 사용해야 할 약간의 수정이 있다고 생각합니다.
Saumil 2014 년


29

당신은 사용할 수 있습니다 visibility또는 display그러나 당신은 변경 적용 할 필요가 div.style객체가 아닌 div객체 자체를.

var div = document.getElementById('div_id');

// hide
div.style.visibility = 'hidden';
// OR
div.style.display = 'none';

// show
div.style.visibility = 'visible';
// OR
div.style.display = 'block';

div.style.visibility = falseChrome에서 작동하지 않습니다. 그리고 그 true부분은 속성을 설정 해제하기 때문에 우연히 더 많이 작동하는 것 같습니다 (내 반대 투표는 아닙니다)
Pekka

부울 속성 display도 마찬가지 visibility입니다. 게다가, none그리고 block필요성은 그들이 .. 문자열이기 때문에 인용한다
ThiefMaster

레이블 값이 잘못되었습니다. 그게 지금 작동하고 나는 이것을 조작하지 않을 것입니다. 너무 단순합니다.
zellio

4

DOM 함수 인 setAttribute 및 removeAttribute를 사용할 수 있습니다. 다음 링크에는 사용 방법에 대한 예가 있습니다.

setAttribute 및 removeAttribute 함수

빠른보기 :

hide:    document.getElementById("myDiv").setAttribute("hidden","");
unhide:  document.getElementById("myDiv").removeAttribute("hidden");

2
답변을 향상시킬 수 있습니까? 예와 설명이 있습니다.
Gaël Barbin

1

opacity비슷한 것을 사용할 수 visibility 있지만 원활하게 전환하고 높이와 같은 다른 매개 변수를 제어 할 수 있습니다 (스 니펫 단순성을 위해 js 로직을 html에 직접 넣습니다. 프로덕션 코드에서는 수행하지 마십시오)



0

CSS를 사용하여 보이지 않게 만들기

#div_id {
        /*height: 400px;*/
         visibility:hidden;
    }

자바 스크립트를 사용하여 표시

document.getElementById('div_id').style.visibility = 'visible';
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.