【发布时间】:2021-08-21 05:14:11
【问题描述】:
我已经查看了有关删除表格 tbody 标记的其他一些问题(见下文),但仍然遇到问题。
<tbody> tag displays in chrome but not source
Javascript delete a table tbody tag
How do i remove <tbody> tags from an HTML table?
执行 SQL 查询后,我想生成一个带有结果的 HTML 表,然后通过将相似的行包装在 tbody /tbody 标记中来对它们进行分组,以便使用 CSS 奇/偶符号对组进行颜色编码。
我的 javascript 函数可以正常工作,但问题是当第一次生成行时,Chrome 浏览器将它们包装在 tbody /tbody 标记中。所以最后我留下了下面的 HTML 和一组额外的外部 tbody 标记(这会弄乱表格中的列对齐并且无法正确显示)。
(* 我想去掉外面的 tbody 标签集 *)
<tbody>
<tbody></tbody>
<tbody></tbody>
<tbody></tbody>
<tbody></tbody>
<tbody></tbody>
</tbody>
我意识到我可以在用于显示表格行开始的 php 中加入一些逻辑,并尝试以这种方式插入开始和结束 tbody 标记,以便永远不会生成外部集,但它更简洁一些只是显示所有行,然后将它们分组。
是否可以删除外部 tbody 标签而不删除它们之间的内容?谢谢。
html文件
<!-- start all funds table -->
<table id="all_funds_table" data-role="table" data-mode="columntoggle" class="table
table-sm table-striped table-hover">
<thead>
<tr>
<th>ng</th>
<th>FID</th>
<th>Lid</th>
</tr>
</thead>
<!-- <tbody> -->
<?php
if ($result = $connection->query($sql)) {
while ($row = $result->fetch_assoc()) {
// only display rows with ng = 1
if ($row['ng'] == 1) {
?>
<tr class="gpRep">
<td style = "text-align: center"><?= $row['ng'] ?></td>
<td style = "text-align: center"><a href="group.php?FID=<?php echo $row['FID']; ?>"><?= $row['FID'] ?></a></td>
<td style = "text-align: center"><a href="fund.php?lid=<?php echo $row['lid']; ?>"><?= $row['lid'] ?></a></td>
</tr>
<?php
// collapse rows with ng != 1
} else {
?>
<tr class="collapse">
<td style = "text-align: center"><?= $row['ng'] ?></td>
<td style = "text-align: center"><a href="group.php?FID=<?php echo $row['FID']; ?>"><?= $row['FID'] ?></a></td>
<td style = "text-align: center"><a href="fund.php?lid=<?php echo $row['lid']; ?>"><?= $row['lid'] ?></a></td>
</tr>
<?php
} // end if ($row['ng'] == 1)
} // end while
$result->free();
} // end if
if ($mysqli->connect_error) {
die("Connection failed: " . $mysqli->connect_error);
}
$connection->close();
?>
<!-- close connection -->
<!-- </tbody> -->
<script type="text/javascript">
wrapRows();
</script>
</table>
<!-- end all funds table -->
js文件
function wrapRows(){
$('#all_funds_table tr.gpRep').each(function(){
$(this).nextUntil('.gpRep').add(this).wrapAll('<tbody />');
});
}
【问题讨论】:
-
Chrome 会尝试修复格式错误的标记。如果您在浏览器中看到的标记不是您想要的,那么您的 html 中有一个错误。
-
在 PHP 中添加正确的
tbody标签。
标签: php html html-table html-tbody