So machen Sie einen DIV mit JavaScript sichtbar und unsichtbar


113

Kannst du so etwas machen?

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

1
Warum nicht einfach Jquery verwenden? .ausblenden() ?
— Coderama

Würde ich das für den Namen des Div verwenden, also würde ich es tun, wenn der Div Test heißt test.hide()?

8
@ JackStone: Nein, das ist nur möglich, wenn Sie bereits die jQuery-Bibliothek verwenden. Einige Leute bewerben es einfach gerne bei jeder JavaScript-Frage. Auch wenn Sie es waren, .hide()wird die Sichtbarkeit nicht festgelegt. Hiermit wird die Anzeige eingestellt.

6
@am nicht ich bin du hast eindeutig nicht verstanden, dass jQuery wirklich großartig ist und alles macht. (Bildquelle)
— Pekka

8
Für so etwas wie dieses eine gute Antwort sowohl eine einfache JS - Lösung und eine , welche die enthalten sollte Vorteil der Verwendung einer Bibliothek - in diesem Fall nicht zu behandeln, die Inline - vs - Block bei der Verwendung displayeines Elements zu zeigen.
— ThiefMaster

Antworten:


139

Wenn [DIV] ein Element ist, dann

[DIV].style.visibility='visible'

ODER

[DIV].style.visibility='hidden' 

16
visibilityhat den Nebeneffekt, dass der vom Element belegte Platz reserviert bleibt. Das kann oder kann nicht sein, was das OP will
— Pekka

1
An der Stelle, an der [DIV] steht, würde ich den Namen meines Div eingeben, oder?

20
Nein, verwenden Sie document.getElementById('id-of-the-div')anstelle von[DIV]
— ThiefMaster

@ JackStone: Es hängt davon ab, was du mit dem "Namen" deines Divs meinst. Wenn es sich um eine Variable handelt, die auf das div verweist, dann ja.

1
Also, wenn mein Div Name wäre testdiv, wäre es document.getElementById('testdiv').style.visibility = 'hidden';?

123

Angenommen, Sie verwenden keine Bibliothek wie jQuery.

Wenn Sie noch keinen Verweis auf das DOM-Element haben, verwenden Sie einen var elem = document.getElementById('id');

Anschließend können Sie eine beliebige CSS-Eigenschaft dieses Elements festlegen. Zum Ein- / Ausblenden können Sie zwei Eigenschaften verwenden: displayund visibility, die leicht unterschiedliche Auswirkungen haben:

Das Anpassen style.displaysieht so aus, als ob das Element überhaupt nicht vorhanden ist ("entfernt").

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)

oder style.visibilitywird das div tatsächlich noch da sein lassen, aber "alles leer" oder "alles weiß" sein

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

Wenn Sie jQuery verwenden, können Sie dies noch einfacher tun, solange Sie die displayEigenschaft festlegen möchten :

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

Es wird automatisch der entsprechende displayWert verwendet. Sie müssen sich nicht um den Elementtyp (Inline oder Block) kümmern. Darüber hinaus elemkann nicht nur ein DOM-Element, sondern auch ein Selektor wie sein#id oder .classoder etwas anderes, das für CSS3 (und mehr!) Gültig ist.


Ich bevorzuge deine Antwort, aber ich denke, es gibt eine kleine Korrektur, die du verwenden musst. Elem.style.display = 'none';
— Saumil


28

Sie können visibilityoder displaymüssen Änderungen am div.styleObjekt und nicht am divObjekt selbst vornehmen .

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 = falsefunktioniert bei mir in Chrome nicht. Und das trueTeil scheint eher zufällig zu funktionieren, weil es das Eigentum aufhebt (allerdings nicht meine Gegenstimme)
— Pekka

Weder displaynoch visibilitysind boolesche Eigenschaften. Außerdem noneund blockmüssen zitiert werden, da es sich um Strings handelt.
— ThiefMaster

falsche Werte für die Etiketten. Diese funktionieren jetzt und nein, ich werde das nicht fummeln, es ist zu simpel.
— Zellio

4

Sie können die DOM-Funktionen setAttribute und removeAttribute verwenden. Im folgenden Link finden Sie ein Beispiel für deren Verwendung.

Funktionen setAttribute und removeAttribute

Ein kurzer Überblick:

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

2
Können Sie Ihre Antwort verbessern? Mit Beispiel und Erklärungen.
— Gaël Barbin

1

Sie können verwenden, opacitywas ähnlich ist, visibility aber den Übergang glätten und andere Parameter wie die Höhe steuern kann (der Einfachheit halber habe ich die js-Logik direkt in HTML eingefügt - tun Sie dies nicht im Produktionscode).


0

Verwenden Sie das Attribut 'hidden' des DOM-Elements:

function showDiv(isVisible)
{
    [DIV].hidden = !isVisible;
}

0

Mit CSS unsichtbar machen

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

Mit Javascript sichtbar machen

document.getElementById('div_id').style.visibility = 'visible';
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.