Javascript 如何在不调整总宽度的情况下隐藏表行?

Javascript 如何在不调整总宽度的情况下隐藏表行?,javascript,html,css,xhtml,html-table,Javascript,Html,Css,Xhtml,Html Table,有没有一种方法可以在不影响整个表宽度的情况下隐藏表行?我有一些javascript显示/隐藏一些表行,但是当这些行设置为display:none,该表将收缩以适应可见行的内容。如果希望保留表的总宽度,可以在隐藏行之前进行检查,并将“宽度样式”属性显式设置为此值: table.style.width = table.clientWidth + "px"; table.rows[3].style.display = "none"; 但是,隐藏行时,这可能会导致单个列回流。缓解此问题的一种可能方法是

有没有一种方法可以在不影响整个表宽度的情况下隐藏表行?我有一些javascript显示/隐藏一些表行,但是当这些行设置为
display:none,该表将收缩以适应可见行的内容。

如果希望保留表的总宽度,可以在隐藏行之前进行检查,并将“宽度样式”属性显式设置为此值:

table.style.width = table.clientWidth + "px";
table.rows[3].style.display = "none";
但是,隐藏行时,这可能会导致单个列回流。缓解此问题的一种可能方法是向表中添加样式:

 table {
  table-layout: fixed;
 }

作为参考,levik的解决方案非常有效。在我的例子中,使用jQuery,解决方案如下所示:

$('#tableId').width($('#tableId').width());

在CSS中,
表格布局:固定指示浏览器遵守您为高度和宽度指定的尺寸。这通常会抑制浏览器自动调整大小,除非您没有给出任何关于行和列的首选大小的提示。

您可以使用纯HTML进行此操作


1.
2.
3.
4.
CSS规则正是为此而设计的

tbody.collapsed>tr{
能见度:塌陷;
}
添加此CSS后,您可以通过以下方式从JS触发可见性:

tbody.classList.toggle('collapsed');

…在调整窗口大小之前,表格的固定宽度不再回流,因为它现在是固定的像素宽度…我使用表格布局:固定;我的问题消失了:这对我来说绝对是最好的答案。