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.