Php 如何摆脱<;t车身>;及</t车身>;HTML表标记,但不删除标记内的内容?
我已经看了一些关于删除table-tbody标记的其他问题(见下文),但仍然遇到了一个问题 执行SQL查询后,我想生成一个包含结果的HTML表,然后通过将类似行包装在tbody/tbody标记中来对它们进行分组,以便使用CSS奇偶表示法对这些组进行颜色编码 我的javascript函数可以很好地实现这一点,但问题是,当第一次生成行时,Chrome浏览器将它们包装在tbody/tbody标记中。因此,最后我只剩下下面的HTML和一组额外的外部tbody标记(这会弄乱表中的列对齐方式,并且无法正确显示) (*我想去掉外部的tbody标记集*)Php 如何摆脱<;t车身>;及</t车身>;HTML表标记,但不删除标记内的内容?,php,html,html-table,html-tbody,Php,Html,Html Table,Html Tbody,我已经看了一些关于删除table-tbody标记的其他问题(见下文),但仍然遇到了一个问题 执行SQL查询后,我想生成一个包含结果的HTML表,然后通过将类似行包装在tbody/tbody标记中来对它们进行分组,以便使用CSS奇偶表示法对这些组进行颜色编码 我的javascript函数可以很好地实现这一点,但问题是,当第一次生成行时,Chrome浏览器将它们包装在tbody/tbody标记中。因此,最后我只剩下下面的HTML和一组额外的外部tbody标记(这会弄乱表中的列对齐方式,并且无法
我意识到我可以在用来显示表行的php中加入一些逻辑,并尝试以这种方式插入开始和结束tbody标记,这样就永远不会生成外部集,但只显示所有行,然后再对它们进行分组会更干净一些
是否可以在不移除外部t车身标签之间的内容的情况下移除外部t车身标签?谢谢
html文件
ng
氢火焰离子化检测器
盖子
wrapRows();
js文件
function wrapRows(){
$('#all_funds_table tr.gpRep').each(function(){
$(this).nextUntil('.gpRep').add(this).wrapAll('<tbody />');
});
}
函数wrapRows(){
$(“#所有_基金_表tr.gpRep”)。每个(函数(){
$(this.nextUntil('.gpRep').add(this.wrapAll('');
});
}
使用Javascript
接受所需的
,并在迭代时将行移到其外部。完成后,移除原始的
请注意,在每种情况下,都需要在调用nextUntil
后重新添加第一行
$('#all_funds_table tr.gpRep').each(function(){
$(this).nextUntil('.gpRep').addBack().wrapAll('<tbody />')
.parent().appendTo($('#all_funds_table'));
});
$('#all_funds_table tbody:first').remove();
$('all#funds_table tr.gpRep')。每个(函数(){
$(this).nextUntil('.gpRep').addBack().wrapAll('')
.parent().appendTo($(“#所有_基金_表”);
});
$(“#所有_基金_表主体:第一个”).remove();
使用PHP
没有任何理由不首先输出
标记。这将节省浏览器中的处理时间
<?php
if ($result = $connection->query($sql)) {
$first = true;
while ($row = $result->fetch_assoc()) {
// only display rows with ng = 1
if ($row['ng'] == 1) {
if (!$first) { echo '</tbody>'; }
$first = false;
?>
<tbody>
<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>
</tbody>
</table>
wrapRows();
这种HTML和PHP的混合并不特别容易阅读。根据需要输出的数据量,您可能会发现,首先以所需格式将信息加载到数组中,然后将数组转换为HTML输出会更整洁。Chrome会尝试修复格式不正确的标记。如果您在浏览器中看到的标记不是您想要的,则说明您的html中存在错误。请在PHP中添加正确的
tbody
标记。非常感谢。我在想,如果tbody标记本身不能被删除,那么我可以将行移到它们之外,然后只删除原始的tbody元素,但我不知道该怎么做。您的javascript解决方案工作得非常好。我同意你的观点,html和php的混合有点难读。我将首先考虑将期望的输出加载到数组中。再次感谢。最终使用此解决方案来显示、隐藏行并对行进行颜色编码,从而消除了多组正文标记。但再次感谢你的帮助,马特$奇数=假;while($row=$result->fetch_assoc()){if($row['ng']==1){$odd=!$odd;}//end if($row['ng']==1)?>
<?php
if ($result = $connection->query($sql)) {
$first = true;
while ($row = $result->fetch_assoc()) {
// only display rows with ng = 1
if ($row['ng'] == 1) {
if (!$first) { echo '</tbody>'; }
$first = false;
?>
<tbody>
<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>
</tbody>
</table>