[英]HTML Table Rowspan Conditional
我能理解你实际上想要做什么。 这可以通过多种方式完成。 使用一些复杂的逻辑也可以调节行跨度。 但我会用最简单的方法 go 。 例子:
我不知道您使用的是哪种服务器端语言;假设您使用的是 PHP。 所以,
首先,只需编写两个函数。 第一个用于从数据库表中获取“用户 ID”。 第二个用于根据用户 ID 获取用户数据。
<?php
function user_ids(){
$stmt = $conn->prepare("SELECT `user_id` FROM `table` GROUP BY user_id);
$stmt->execute();
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
return $result;
}
function user_ids($user_id){
$stmt = $conn->prepare("SELECT *FROM `table` WHERE user_id = ?);
$stmt->execute(array($user_id));
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
return $result;
}
$user_ids = user_ids();
foreach($user_ids as $data){
?>
<tr>
<td><?= $data['user_id'] ?></td>
<td>
<table>
<?php
$user_data = user_data($data['user_id']);
foreach($user_data as $x){ ?>
<tr>
<td><?= $x['id'] ?></td>
<td><?= $x['title'] ?></td>
<td><?= $x['body'] ?></td>
</tr>
<?php } ?>
</table>
</td>
</tr>
<?php
}
?>
完成此任务需要一些 Js -
let presentElem = {};
let removedElem = [];
const rows = document.getElementsByTagName("tr");
Array.from(rows).forEach(element => {
if (presentElem[element.innerText.charAt(0)]){
element.deleteCell(0);
removedElem.push(element.firstChild)
}
else presentElem[element.innerText.charAt(0)] = element.firstChild;
})
Object.keys(presentElem).forEach(element => {
presentElem[element].setAttribute("rowspan", removedElem.length )
})
如果您不想将自定义 class 添加到表中的所有tr
标记,则此代码将添加此功能的所有表,然后将常量行的值分配给document.getElementsByClassName("classname")
和这个只会将此功能添加到此表
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.