Cara membuat DIV terlihat dan tidak terlihat dengan JavaScript


113

Bisakah kamu melakukan sesuatu seperti

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

1
Mengapa tidak menggunakan Jquery saja? .hide ()?
— coderama

Apakah saya akan menggunakannya untuk nama div, jadi jika div bernama test, saya akan melakukannya test.hide()?

8
@JackStone: Tidak, itu hanya jika Anda sudah menggunakan pustaka jQuery. Beberapa orang hanya suka mempromosikannya di setiap pertanyaan JavaScript. Bahkan jika Anda pernah, .hide()tidak mengatur visibilitas. Ini mengatur tampilan.

6
@ am not i am Anda jelas gagal untuk memahami bahwa jQuery benar-benar hebat dan melakukan semua hal. (Sumber gambar)
— Pekka

8
Untuk sesuatu seperti ini, jawaban yang baik harus berisi solusi JS biasa dan solusi yang menunjukkan keuntungan menggunakan pustaka - dalam hal ini, tidak harus berurusan dengan blok inline vs saat menggunakan displayuntuk menampilkan elemen.
— ThiefMaster

Jawaban:


139

jika [DIV] adalah elemen maka

[DIV].style.visibility='visible'

ATAU

[DIV].style.visibility='hidden' 

16
visibilitymemiliki efek samping bahwa ruang yang ditempati oleh elemen tersebut tetap dicadangkan. Itu mungkin atau mungkin bukan yang diinginkan OP
— Pekka

1
Di tempat di mana dikatakan [DIV], saya akan mengetikkan nama div saya kan?

20
Tidak, gunakan document.getElementById('id-of-the-div')sebagai ganti[DIV]
— ThiefMaster

@JackStone: Itu tergantung pada apa yang Anda maksud dengan "nama" div Anda. Jika itu adalah variabel yang mereferensikan div, maka ya.

1
Jadi jika div saya adalah nama testdiv, apakah itu document.getElementById('testdiv').style.visibility = 'hidden';?

124

Anggaplah Anda tidak menggunakan pustaka seperti jQuery.

Jika Anda belum memiliki referensi ke elemen DOM, dapatkan satu menggunakan var elem = document.getElementById('id');

Kemudian Anda dapat menyetel properti CSS apa pun dari elemen itu. Untuk menampilkan / menyembunyikan, Anda dapat menggunakan dua properti: displaydan visibility, yang memiliki efek yang sedikit berbeda:

Menyesuaikan style.displayakan terlihat seolah-olah elemen tidak ada sama sekali ("dihapus").

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)

atau style.visibilitybenar-benar akan membuat div tetap ada, tetapi menjadi "semua kosong" atau "semua putih"

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

Jika Anda menggunakan jQuery, Anda dapat melakukannya dengan lebih mudah selama Anda ingin menyetel displaypropertinya:

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

Ini secara otomatis akan menggunakan nilai yang sesuai display; Anda tidak perlu peduli dengan jenis elemen (sebaris atau blok). Selain itu, elemtidak hanya dapat menjadi elemen DOM tetapi juga pemilih seperti #idatau .classatau apa pun yang merupakan CSS3 yang valid (dan banyak lagi!).


Saya lebih suka jawaban Anda, tetapi saya rasa ada sedikit koreksi yang harus Anda gunakan untuk elem.style.display = 'none';
— Saumil


29

Anda dapat menggunakan visibilityatau displaytetapi Anda harus menerapkan perubahan pada div.styleobjek dan bukan divobjek itu sendiri.

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 = falsetidak bekerja untuk saya di Chrome. Dan truebagian tersebut tampaknya bekerja lebih karena kecelakaan karena mengganggu properti (Namun bukan suara negatif saya)
— Pekka

Juga displaybukan visibilityproperti boolean. Selain itu, nonedan blockperlu dikutip karena mereka adalah string ..
— ThiefMaster

nilai yang salah untuk label. Itu bekerja sekarang dan tidak, saya tidak akan mengotak-atik ini, itu terlalu sederhana.
— zellio

4

Anda dapat menggunakan fungsi DOM: setAttribute dan removeAttribute. Di tautan berikut, Anda memiliki contoh cara menggunakannya.

setAttribute dan fungsi removeAttribute

Tampilan cepat:

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

2
Bisakah Anda meningkatkan jawaban Anda? Dengan contoh dan penjelasannya.
— Gaël Barbin

1

Anda dapat menggunakan opacityyang mirip dengan visibility tetapi memungkinkan untuk memperlancar transisi dan mengontrol parameter lain seperti ketinggian (untuk kesederhanaan cuplikan saya meletakkan logika js di html secara langsung - jangan lakukan itu dalam kode produksi)


0

Gunakan atribut 'tersembunyi' dari elemen DOM:

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

0

Jadikan Tak Terlihat menggunakan CSS

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

Jadikan Terlihat menggunakan Javascript

document.getElementById('div_id').style.visibility = 'visible';
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.