我有一个包含大量行的 html 表,当我尝试打印它时,TFOOT 中的内容显示在每个分页符中。我可以让它只显示在最后一页的表格末尾吗?

注意:我无法从表中删除 tfoot,因为该表是从我正在使用的 yii 框架的 CGridView 输出的。

最佳答案

恐怕只能用脚本来完成。默认情况下, tfoot 元素有 display: table-footer-group ,这意味着它出现在表的任何其他行之后,并且可以在每个页面的末尾重复(如果浏览器想要这样做)。在当前的 CSS 中,您无法将这两件事分开。

如果你设置 tfoot { display: table-row-group } ,它不会重复,但不会出现在表格的末尾,而是在与 HTML 源代码相同的位置,这意味着它在开始,在正常行之前,由 HTML 4 语法。我假设它在 HTML 代码中并且你不能改变它。 (实际上 tfoot 可以放在表格标记的最后,HTML5 允许这样做。)

您可以通过设置 tfoot { display: none } 完全摆脱页脚,但我认为您不想要那样。

如果此处可以使用客户端脚本,那么您可以将 display 设置为 table-row-group 以及简单地将 tfoot 元素移到表中最后的代码。假设 table 元素有 id ,比如说 id=tbl ,你可以使用以下脚本(它也设置 display ):

var tbl = document.getElementById('tbl');
var foot = tbl.getElementsByTagName('tfoot')[0];
foot.style.display = 'table-row-group';
tbl.removeChild(foot);
tbl.appendChild(foot);

如果 table 元素缺少 id ,您需要一些不同的方式在 JavaScript 中查找该元素,具体取决于页面的结构。如果它是唯一的或第一个 table 元素,则可以将上面的第一行替换为
var tbl = document.getElementsByTagName('table')[0];

10-06 08:24