JavaScriptでDIVを表示および非表示にする方法


113

あなたは何かをすることができますか

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

1
なぜjqueryを使わないのですか?.hide()?
coderama

それをdivの名前に使用するので、divがtestという名前の場合、私はそうしtest.hide()ますか?

8
@JackStone:いいえ、それはすでにjQueryライブラリを使用している場合のみです。一部の人々は、すべてのJavaScriptの質問でそれを宣伝したいだけです。あなたがそうであったとしても、.hide()可視性を設定しません。表示を設定します。

6
@amではありませんが、jQueryが本当に優れており、すべてのこと を実行できることを明らかに理解できていません。(画像ソース)
Pekka

8
このようなもののために良い答えは、プレーンJSソリューションと示す1両方含まれている必要があります利点ライブラリを使用してのを-この場合には、対処する必要がないブロック対インライン使用した場合displayの要素を表示します。
ThiefMaster

回答:


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プロパティを設定できます。表示/非表示するには、2つのプロパティを使用できます: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値が自動的に使用されます。要素のタイプ(インラインまたはブロック)を気にする必要はありません。また、elem唯一のDOM要素だけでなく、セレクタのようなことができない#idか、.classまたは有効なCSS3である何か他のもの(ともっと!)。


私はあなたの答えを好みますが、elem.style.display = 'none'を使用する必要がある少しの修正があると思います。
サウミル2014年


29

visibilityまたはを使用できますdisplaydiv.styledivオブジェクト自体ではなく、オブジェクトに変更を適用する必要があります。

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、それは財産(ない私のdownvoteかかわらず)を解除しますので、一部は事故によって、より動作しているようだ
ペッカ

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
あなたの答えを高めることができますか?例と説明付き。
ガエル・Barbin

1

opacity似てvisibility いますが、トランジションをスムーズにし、高さなどの他のパラメーターを制御できます(スニペットを簡単にするために、jsロジックを直接htmlに配置します-プロダクションコードでは実行しないでください)。



弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.