Làm cách nào để ẩn một hàng trong bảng HTML <tr> để nó không chiếm không gian?


105

Làm cách nào để ẩn một hàng trong bảng HTML <tr>để nó không chiếm không gian? Tôi đã đặt một số <tr>thành style="display:none;", nhưng chúng vẫn ảnh hưởng đến kích thước của bảng và đường viền của bảng phản ánh các hàng bị ẩn.


2
Chúng có được hiển thị / ẩn nhiều lần không? Hay khi chúng ẩn đi, chúng có biến mất một cách hiệu quả không? Bởi vì bạn có thể sử dụng javascript để chỉ xóa hàng và nó có thể sẽ khắc phục sự cố của bạn.
brettkelly

Tôi muốn bắt đầu chúng ở dạng ẩn, sau đó hiển thị chúng nếu người dùng nhấp vào nút để "hiển thị thêm". Khi chúng bị ẩn, tôi không muốn chúng chiếm không gian dọc.
MikeN

tôi cũng gặp vấn đề này, nếu bạn xóa () hàng bằng javascript, nó vẫn chiếm một số không gian trong IE6. không có cách nào xung quanh IE hấp dẫn
mkoryak

1
Bạn đang sử dụng loại tài liệu nào? Tôi chấp nhận rằng thực tế đơn giản rằng bạn đang đăng trên SO với một đại diện tốt cho thấy rằng bạn có thể biết đủ để tránh chế độ kỳ quặc ... nhưng câu hỏi ngu ngốc duy nhất là một câu hỏi không được hỏi. ... và câu chuyện về chồi non, rõ ràng.
David nói Khôi phục Monica

1
Tôi vừa thử nghiệm trong FF 3.5 và IE8 - cả hai đều ẩn hàng với hiển thị: không có
17 của ngày 26 tháng

Câu trả lời:


37

Tôi thực sự muốn xem kiểu dáng TABLE của bạn. Ví dụ: "biên giới thu gọn"

Chỉ là phỏng đoán, nhưng nó có thể ảnh hưởng đến cách các hàng 'ẩn' đang được hiển thị.


2
Cảm ơn! Đó là phong cách còn thiếu.
MikeN

100

Bạn có thể bao gồm một số mã? Tôi thêm style="display:none;"vào các hàng trong bảng của mình mọi lúc và nó ẩn toàn bộ hàng một cách hiệu quả.


đã làm cho tôi. Tôi đang cố gắng đặt chế độ hiển thị: hidden before :(
Toadums

Hiện vẫn còn khoảng cách: /
fatuhoku

làm thế nào để ngăn chặn điều này thay đổi độ rộng của bảng khi bạn hiển thị ẩn hàng, tôi không muốn làm bố trí bảng cố định
PirateApp

57

Bạn có thể đặt <tr id="result_tr" style="display: none;">và sau đó hiển thị lại bằng JavaScript:

var result_style = document.getElementById('result_tr').style;
result_style.display = 'table-row';

5
Mát mẻ! đây là những gì tôi đang tìm kiếm :)
kmario23

4
Cảm ơn bạn!! Giấu rất dễ dàng, nhưng làm sáng chúng trở lại đang chứng tỏ có vấn đề.
Hang động Jefferey

điều này thay đổi độ rộng của bảng, tôi đang làm một bộ lọc nơi hàng cần phải được hiển thị ẩn dựa trên whats bên trong hộp tìm kiếm
PirateApp

13

Tôi nghĩ rằng tôi sẽ thêm vào đây một giải pháp tiềm năng khác:

<tr style='visibility:collapse'><td>stuff</td></tr>

Tôi chỉ thử nghiệm nó trên Chrome nhưng việc đặt nó trên <tr>ẩn hàng CỘNG tất cả các ô bên trong hàng vẫn đóng góp vào độ rộng của các cột. Đôi khi tôi sẽ tạo thêm một hàng ở cuối bảng chỉ với một số dấu cách làm cho nó để các cột nhất định không thể nhỏ hơn một chiều rộng nhất định, sau đó ẩn hàng bằng phương pháp này. (Tôi biết bạn được cho là có thể làm điều này với các css khác nhưng tôi chưa bao giờ làm điều đó thành công)

Một lần nữa, tôi đang ở trong một môi trường chrome hoàn toàn nên tôi không biết nó hoạt động như thế nào trong các trình duyệt khác.


1
Điều này hoạt động trong hầu hết các trình duyệt hiện đại, ngoại trừ Safari, hiển thị khoảng trắng thay vì ẩn hàng: developer.mozilla.org/en-US/docs/Web/CSS/visibility
Oscar Scholten

8

Nếu display: none;không hoạt động, làm thế nào về cài đặt height: 0;thay thế? Kết hợp với một lề âm (bằng hoặc lớn hơn, chiều cao của đường viền trên và dưới, nếu có) để xóa thêm phần tử? Tôi không tưởng tượng điều đó position: absolute; top: 0; left: -4000px;sẽ hiệu quả, nhưng nó có thể đáng để thử.

Về phần tôi, sử dụng display: nonehoạt động tốt.


4

Thêm một số dòng-height sau: 0px; font-size: 0px; height: 0px; margin: 0; padding: 0;

Tôi quên cái nào làm điều đó. Tôi nghĩ đó là chiều cao dòng cho IE6.


4

Tôi đang gặp vấn đề tương tự, tôi thậm chí đã thêm style = "display: none" vào mỗi ô.

Cuối cùng, tôi đã sử dụng nhận xét HTML <!-- [HTML] -->


4

Bạn có thể sử dụng kiểu hiển thị: không có tr để ẩn và nó sẽ hoạt động với tất cả các trình duyệt.


3
var result_style = document.getElementById('result_tr').style;
result_style.display = '';

đang hoạt động hoàn hảo cho tôi ..


2

Điều này đã xảy ra với tôi và tôi bối rối không biết tại sao. Sau đó, tôi nhận thấy rằng nếu tôi loại bỏ bất kỳ nbsp nào; tôi đã có trong các hàng, sau đó các hàng không chiếm bất kỳ khoảng trống nào.


-1

Bạn cần đặt thay đổi kiểu nhập thành ẩn, tất cả các chức năng của nó hoạt động nhưng nó không hiển thị trên trang

<input type="hidden" name="" id="" value="">

miễn là loại đầu vào được đặt thành bạn có thể thay đổi phần còn lại. Chúc may mắn!!


-3

Tôi đã gặp vấn đề tương tự và tôi đã giải quyết vấn đề. Trước đó css bị tràn: hidden; chỉ số z: 999999;

Tôi thay đổi nó thành tràn: hiển thị;


-3

HTML:

<input type="checkbox" id="attraction" checked="checked" onchange="updateMap()">poi.attraction</input>

JavaScript:

function updateMap() {
     map.setOptions({'styles': getStyles() });
} 

function getStyles() {
    var styles = [];
    for (var i=0; i < types.length; i++) {
      var style = {};
      var type = types[i];
      var enabled = document.getElementById(type).checked;
      style['featureType'] = 'poi.' + type;
      style['elementType'] = 'labels';
      style['stylers'] = [{'visibility' : (enabled ? 'on' : 'off') }];
      styles.push(style);
    }
    return styles;
}

-5

position: absolute sẽ xóa nó khỏi luồng bố cục và sẽ giải quyết vấn đề của bạn - phần tử sẽ vẫn ở trong DOM nhưng sẽ không ảnh hưởng đến những phần tử khác.


fwiw Tôi nghĩ đây là một giải pháp tuyệt vời nếu bạn muốn ẩn một cột, trong một số tình huống cụ thể. bổ sung thêmopacity: 0
Grapho

-5

Bạn có thể đặt

<table>
  <tr style="visibility: hidden"></tr>
</table> 

5
Với visibility: hidden;các yếu tố vẫn sẽ mất không gian, đó là sự khác biệt giữa visibilitydisplaythuộc tính
Dmitry Pashkevich

Sử dụng như thế này<table><tr style="display: none;"><td></td></tr></table>
Sanu 21/10/18
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.