ฉันจะซ่อนแถวตาราง HTML <tr> เพื่อไม่ให้มีพื้นที่ว่างได้อย่างไร


106

ฉันจะซ่อนแถวตาราง HTML <tr>เพื่อไม่ให้มีพื้นที่ว่างได้อย่างไร ฉัน<tr>ตั้งค่าเป็นหลายชุดstyle="display:none;"แต่ยังคงมีผลต่อขนาดของตารางและเส้นขอบของตารางจะสะท้อนถึงแถวที่ซ่อนอยู่


2
มีการแสดง / ซ่อนซ้ำ ๆ หรือไม่? หรือเมื่อพวกเขาซ่อนอยู่พวกเขาจะหายไปอย่างมีประสิทธิภาพหรือไม่? เนื่องจากคุณสามารถใช้จาวาสคริปต์เพื่อลบแถวออกและอาจช่วยแก้ปัญหาของคุณได้
brettkelly

ฉันต้องการเริ่มต้นโดยซ่อนจากนั้นแสดงให้ผู้ใช้เห็นหากผู้ใช้คลิกปุ่มเพื่อ "แสดงเพิ่มเติม" เมื่อซ่อนไว้ฉันไม่ต้องการให้พวกเขาใช้พื้นที่แนวตั้ง
MikeN

ฉันมีปัญหาเดียวกันนี้หากคุณลบ () แถวด้วยจาวาสคริปต์ก็ยังคงใช้พื้นที่ว่างใน IE6 ไม่มีทางรอบ IE
ห่วย

1
คุณใช้หลักประเภทใด ฉันยอมรับว่าความจริงง่ายๆที่คุณโพสต์ใน SO โดยมีตัวแทนที่ดีบ่งบอกว่าคุณอาจรู้ดีพอที่จะหลีกเลี่ยงโหมดนิสัยใจคอ ... แต่คำถามโง่ ๆ เพียงคำถามเดียวที่ไม่ได้ถาม ... และเรื่องเกี่ยวกับนกแต้วแล้ว
เดวิดกล่าวว่าคืนสถานะโมนิกา

1
ฉันเพิ่งทดสอบใน FF 3.5 และ IE8 - ทั้งสองซ่อนแถวด้วยจอแสดงผล: ไม่มี
17 จาก 26

คำตอบ:


38

ฉันอยากเห็นรูปแบบของตารางของคุณจริงๆ เช่น "ชายแดน - ยุบ"

เป็นเพียงการคาดเดา แต่อาจมีผลต่อการแสดงผลแถวที่ "ซ่อน"


2
ขอบคุณ! นั่นคือสไตล์ที่หายไป
MikeN

101

คุณสามารถใส่รหัสได้หรือไม่? ฉันเพิ่มstyle="display:none;"แถวในตารางตลอดเวลาและมันซ่อนทั้งแถวได้อย่างมีประสิทธิภาพ


ทำงานให้ฉัน ฉันพยายามตั้งค่าการมองเห็น: ซ่อนไว้ก่อน :(
Toadums

ยังคงมีระยะห่าง: /
fatuhoku

วิธีป้องกันไม่ให้สิ่งนี้เปลี่ยนความกว้างของตารางเมื่อคุณแสดงซ่อนแถวฉันไม่ต้องการแก้ไขเค้าโครงตาราง
PirateApp

57

คุณสามารถตั้งค่า<tr id="result_tr" style="display: none;">แล้วแสดงกลับด้วย JavaScript:

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

5
เย็น! นี่คือสิ่งที่ฉันกำลังมองหา :)
kmario23

4
ขอบคุณ!! การซ่อนเป็นเรื่องง่าย แต่การทำให้พวกเขากลับมาเป็นปัญหา
Jefferey Cave

สิ่งนี้เปลี่ยนความกว้างของตารางฉันกำลังทำตัวกรองที่ต้องแสดงแถวที่ซ่อนอยู่ตามสิ่งที่อยู่ในช่องค้นหา
PirateApp

14

คิดว่าฉันจะเพิ่มโซลูชันอื่นที่เป็นไปได้:

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

ฉันได้ทดสอบบน Chrome เท่านั้น แต่วางสิ่งนี้ไว้ในการ<tr>ซ่อนแถวบวกเซลล์ทั้งหมดในแถวยังคงมีส่วนทำให้ความกว้างของคอลัมน์ บางครั้งฉันจะสร้างแถวพิเศษที่ด้านล่างของตารางโดยมีตัวเว้นวรรคเพียงบางส่วนที่ทำให้บางคอลัมน์ต้องมีความกว้างไม่น้อยกว่าความกว้างที่กำหนดจากนั้นซ่อนแถวโดยใช้วิธีนี้ (ฉันรู้ว่าคุณควรจะสามารถทำสิ่งนี้กับ css อื่นได้ แต่ฉันไม่เคยได้ผลเลย)

อีกครั้งฉันอยู่ในสภาพแวดล้อมโครเมี่ยมล้วนๆดังนั้นฉันจึงไม่รู้ว่าฟังก์ชันนี้ในเบราว์เซอร์อื่นเป็นอย่างไร


1
สิ่งนี้ใช้ได้กับเบราว์เซอร์ที่ทันสมัยที่สุดโดยมีข้อยกเว้นที่น่าทึ่งของ Safari ซึ่งแสดงผลช่องว่างแทนที่จะซ่อนแถว: developer.mozilla.org/en-US/docs/Web/CSS/visibility
Oscar Scholten

8

ถ้าdisplay: none;ไม่ได้ผลจะตั้งค่าheight: 0;แทนได้อย่างไร ร่วมกับขอบลบ (เท่ากับหรือมากกว่าความสูงของเส้นขอบด้านบนและด้านล่างถ้ามี) เพื่อลบองค์ประกอบต่อไป? ฉันไม่คิดว่าposition: absolute; top: 0; left: -4000px;จะได้ผล แต่มันก็คุ้มค่าที่จะลอง

สำหรับส่วนของฉันใช้display: noneงานได้ดี


4

เพิ่มความสูงของบรรทัดต่อไปนี้: 0px; font-size: 0px; height: 0px; margin: 0; padding: 0;

ฉันลืมว่าอันไหนทำ ฉันคิดว่ามันเป็นความสูงของบรรทัดสำหรับ IE6


4

ฉันประสบปัญหาเดียวกันฉันยังเพิ่ม style = "display: none" ให้กับแต่ละเซลล์

ในที่สุดฉันก็ใช้ความคิดเห็น HTML <!-- [HTML] -->


4

คุณสามารถใช้ style display: none ที่มี tr เพื่อซ่อนและจะใช้ได้กับทุกเบราว์เซอร์



2

เรื่องนี้เกิดขึ้นกับฉันและฉันก็งงว่าทำไม จากนั้นฉันสังเกตเห็นว่าถ้าฉันลบใด ๆ ; ฉันมีภายในแถวแล้วแถวนั้นไม่ใช้พื้นที่เลย


-1

คุณต้องใส่การเปลี่ยนแปลงประเภทอินพุตเป็นซ่อนฟังก์ชันทั้งหมดของมันทำงานได้ แต่ไม่สามารถมองเห็นได้บนหน้า

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

ตราบเท่าที่ตั้งค่าประเภทอินพุตที่คุณสามารถเปลี่ยนส่วนที่เหลือได้ โชคดี!!


-3

ฉันประสบปัญหาเดียวกันและฉันได้แก้ไขปัญหาแล้ว css ก่อนหน้านี้ล้น: ซ่อน; ดัชนี z: 999999;

ฉันเปลี่ยนเป็น overflow: มองเห็นได้;


-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 จะลบออกจากโฟลว์เค้าโครงและควรแก้ปัญหาของคุณ - องค์ประกอบจะยังคงอยู่ใน DOM แต่จะไม่ส่งผลกระทบต่อผู้อื่น


fwiw ฉันคิดว่านี่เป็นทางออกที่ดีหากคุณต้องการซ่อนคอลัมน์ในบางสถานการณ์ นอกจากนี้เพิ่มopacity: 0
Grapho

-5

คุณสามารถตั้งค่า

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

5
ด้วยvisibility: hidden;องค์ประกอบจะยังคงใช้พื้นที่นั่นคือความแตกต่างระหว่างvisibilityและdisplayคุณสมบัติ
Dmitry Pashkevich

ใช้แบบนี้<table><tr style="display: none;"><td></td></tr></table>
Sanu
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.