html - 我想将表格从水平组更改为垂直组
问题描述
我正在创建这样的表格,但是当我编写 HTML 时,如何将其写入垂直组(一周中的几天)而不是水平组(数字)?
如果你能告诉我更多关于它的信息,我将不胜感激。
a {
display: block;
width: 100%;
height: 100%;
}
table {
border-collapse: collapse;
}
.table td,
th {
border: solid 1px;
padding: 0.5em;
background: #ffffff;
width: 80px;
}
.table.td.table {
border-color: #ffffff;
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<table class="table">
<tr>
<td></td>
<th>Monday</th>
<th>Tuesday</th>
<th>Wednesday</th>
<th>Thursday</th>
<th>Friday</th>
<th>Saturday</th>
</tr>
<tr>
<th>1</th>
<td>
<p>Content</p>
</td>
<td>
<p>Content</p>
</td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<th>2</th>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<th>3</th>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<th>4</th>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<th>5</th>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<th>6</th>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</table>
</body>
</html>
理想如下所示。我想写一周中的每一天而不是数字。
解决方案
AFAIK 没有内置的方法可以在 HTML 中执行此操作(按列而不是行顺序写入)。
然而,你可以做的是把你的时间表写成一行——所以周一是一行,周二是一行等等——这样你就可以按照你想要的方式对事情进行分组。
然后,您可以在运行时使用 Javascript 转置表格。
此代码段采用 @johnvkumpf 在如何反转(转置)HTML 表格的行和列中给出的日期为 22Feb(2021 年)的代码?加上您的原始表,但重写为将日期作为行。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<style>
a {
display: block;
width: 100%;
height: 100%;
}
table {
border-collapse: collapse;
}
.table td,
th {
border: solid 1px;
padding: 0.5em;
background: #ffffff;
width: 80px;
}
.table.td.table {
border-color: #ffffff;
}
</style>
</head>
<body>
<p><a href="#" id="transposButton">Click me to transpose the table</a></p>
<table class="table">
<tr>
<td></td>
<th>1</th>
<th>2</th>
<th>3</th>
<th>4</th>
<th>5</th>
<th>6</th>
</tr>
<tr>
<th>Monday</th>
<td>
<p>Content</p>
</td>
<td>
<p>Content</p>
</td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<th>Tuesday</th>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<th>Wednesday</th>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<th>Thursday</th>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<th>Friday</th>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<th>Saturday</th>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</table>
<script>
$("a#transposButton").click(function(){
$("table").each(function() {
var $this = $(this);
var newrows = [];
$this.find("tr").each(function(rowToColIndex){
$(this).find("td, th").each(function(colToRowIndex){
if(newrows[colToRowIndex] === undefined) { newrows[colToRowIndex] = $("<tr></tr>"); }
while(newrows[colToRowIndex].find("td, th").length < rowToColIndex){
newrows[colToRowIndex].append($("<td></td>"));
}
newrows[colToRowIndex].append($(this));
});
});
$this.find("tr").remove();
$.each(newrows, function(){
$this.append(this);
});
});
return false;
});
</script>
https://stackoverflow.com/questions/66986623/i-want-to-change-the-table-from-a-horizontal-group-to-a-vertical-group
http://jsfiddle.net/xsp4eqwz/2/
</body>
</html>
推荐阅读
- javascript - Puppeteer:如何在没有未定义的情况下将浏览器对象分配给另一个变量?
- python - 在不迭代项目的情况下获取 dict 键的值
- json - 如何使用jq创建一个没有值的干净json模板文件
- python - Flask Celery TypeError: send_() 为参数“time_”获取了多个值
- laravel - Laravel: Designing a DB table for schedules
- javascript - javascript 过滤/搜索 Html 列表
- python - django 获取切片后无法过滤查询
- extjs - 更改时未检查 RadioButton
- json - How do I programmatically find the path for an asset file I have in Angular?
- flutter - 如何在 Flutter 应用中创建堆叠图像的 GridView?