Cách làm cho DIV hiển thị và ẩn với JavaScript


113

Bạn có thể làm điều gì đó như

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

1
Tại sao không chỉ sử dụng Jquery? .ẩn giấu() ?
coderama

Tôi sẽ sử dụng nó cho tên của div, vì vậy nếu div được đặt tên là kiểm tra, tôi sẽ làm gì test.hide()?

8
@JackStone: Không, đó chỉ là khi bạn đã sử dụng thư viện jQuery. Một số người chỉ thích quảng cáo nó trên mọi câu hỏi JavaScript. Ngay cả khi bạn đã có, .hide()không đặt khả năng hiển thị. Nó thiết lập hiển thị.

6
@am không, tôi là bạn đã không hiểu rõ ràng rằng jQuery thực sự tuyệt vời và làm được tất cả mọi thứ. (Nguồn hình ảnh)
Pekka

8
Đối với những thứ như thế này, một câu trả lời tốt phải chứa cả giải pháp JS đơn giản và một giải pháp cho thấy lợi thế của việc sử dụng thư viện - trong trường hợp này, không phải xử lý nội tuyến so với khối khi sử dụng displayđể hiển thị một phần tử.
ThiefMaster

Câu trả lời:


139

nếu [DIV] là một phần tử thì

[DIV].style.visibility='visible'

HOẶC LÀ

[DIV].style.visibility='hidden' 

16
visibilitycó tác dụng phụ là không gian bị chiếm bởi phần tử vẫn được bảo lưu. Đó có thể là hoặc không phải những gì OP muốn
Pekka

1
Ở chỗ nó nói [DIV], tôi sẽ nhập tên div của tôi đúng không?

20
Không, sử dụng document.getElementById('id-of-the-div')thay vì[DIV]
ThiefMaster

@JackStone: Nó phụ thuộc vào ý bạn muốn nói đến "tên" div của bạn. Nếu đó là một biến đang tham chiếu đến div thì có.

1
Vì vậy, nếu div của tôi là tên testdiv, nó sẽ là document.getElementById('testdiv').style.visibility = 'hidden';?

124

Giả sử bạn không sử dụng thư viện như jQuery.

Nếu bạn chưa có tham chiếu đến phần tử DOM, hãy lấy một tham chiếu bằng cách sử dụng var elem = document.getElementById('id');

Sau đó, bạn có thể đặt bất kỳ thuộc tính CSS nào của phần tử đó. Để hiển thị / ẩn, bạn có thể sử dụng hai thuộc tính: displayvisibility, có các hiệu ứng hơi khác nhau:

Việc điều chỉnh style.displaysẽ trông như thể phần tử hoàn toàn không có ("loại bỏ").

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)

hoặc style.visibilitythực sự sẽ làm cho div vẫn ở đó, nhưng là "tất cả trống" hoặc "tất cả màu trắng"

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

Nếu bạn đang sử dụng jQuery, bạn có thể làm điều đó dễ dàng hơn miễn là bạn muốn đặt thuộc displaytính:

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

Nó sẽ tự động sử dụng phù hợp displaygiá trị; bạn không phải quan tâm đến loại phần tử (nội dòng hoặc khối). Ngoài ra, elemkhông chỉ có thể là một phần tử DOM mà còn có thể là một bộ chọn chẳng hạn như #idhoặc .classhoặc bất kỳ thứ gì khác là CSS3 hợp lệ (và hơn thế nữa!).


Tôi thích câu trả lời của bạn hơn nhưng tôi đoán bạn phải chỉnh sửa một chút khi sử dụng elem.style.display = 'none';
Saumil

Đôi khi có thể chấp nhận việc gán một chuỗi rỗng để hiển thị một phần tử .
Basilevs

29

Bạn có thể sử dụng visibilityhoặc displaynhưng bạn phải áp dụng các thay đổi cho div.styleđối tượng chứ không phải divbản thân đối tượng.

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 = falsekhông hoạt động đối với tôi trong Chrome. Và truephần dường như được làm việc nhiều hơn một cách tình cờ bởi vì nó unsets tài sản (Không tôi downvote dù)
Pekka

Cả displaycũng không visibilitylà tài sản boolean. Bên cạnh đó, noneblockcần phải được trích dẫn vì chúng là chuỗi ..
ThiefMaster

các giá trị sai cho các nhãn. Những công việc đó bây giờ và không, tôi sẽ không làm điều này, nó quá đơn giản.
zellio

4

Bạn có thể sử dụng các hàm DOM: setAttribute và removeAttribute. Trong liên kết sau, bạn có một ví dụ về cách sử dụng chúng.

hàm setAttribute và removeAttribute

Xem nhanh:

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

2
Bạn có thể nâng cao câu trả lời của bạn? Với ví dụ và giải thích.
Gaël Barbin

1

Bạn có thể sử dụng opacitytương tự như visibility nhưng cho phép chuyển đổi mượt mà và kiểm soát các thông số khác như chiều cao (để đơn giản hóa đoạn mã, tôi đặt trực tiếp logic js trong html - không làm điều đó trong mã sản xuất)


0

Sử dụng thuộc tính 'hidden' của phần tử DOM:

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

0

Làm cho Ẩn mặt bằng CSS

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

Làm cho Hiển thị bằng Javascript

document.getElementById('div_id').style.visibility = 'visible';
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.