我正在尝试通过将表中的多个列折叠成单个列来对它们进行分组,然后使用 UL 列表来分隔类别:
为此,我正在做的是添加一个布尔值来切换开始/停止堆叠,如下所示:
cols[0][0]="Name";
cols[0][1]=true; //<--toggler
cols[1][0]="Age";
cols[1][1]=false;
cols[2][0]="[M/F]";
cols[2][1]=false;
cols[3][0]="E-mail";
cols[3][1]=true;//<--toggler
但是,使用这种方法我有一些问题:
- 我还没有成功地制作两个连续的组:[A] [B+C][D+E] [F]
- 代码很难阅读,也很难理解切换的作用
我编写头部的代码如下:
document.writeln("<table><thead><tr>");
tmp = "<th>#";
flag = false;
for(i = 0; i < cols_len; i++){
if(cols[i][1]){ //if stack-toggler
if(flag){
tmp += "</th><th>-";
}
flag = !flag;
}
if(!flag){
tmp += "</th><th>" + cols[i][0];
}
}
if(flag){
tmp += "</th><th>-";
}
document.writeln(tmp + "</th></tr></thead><tbody>");
然后对于表格的主体:
for(i = 0; i < 20; i++){ //some number of rows
if(i){
document.writeln("</tr>");
}
document.writeln("<tr><td>" + i + "</td>");
tmp = "";
flag = false;
for(j = 0; j < cols_len; j++){
if(cols[j][1]){ //if stack-toggler
if(flag){
document.writeln("<td><ul>" + (tmp.replace(/<td/g, "<li").replace(/td>/g, "li>")) + "</ul></td>");
tmp = "";
}
flag = !flag;
}
if(flag){
tmp += "<strong>" + cols[j][0] + ":</strong><br>";
}
tmp += "<td>...</td>";
if(!flag){
document.writeln(tmp);
tmp = "";
}
}
if(flag){
document.writeln("<td><ul>" + (tmp.replace(/<td/g, "<li").replace(/td>/g, "li>")) + "</ul></td>");
}
}
document.writeln("</tr></tbody></table>");
»完整的代码和演示可以在这个 jsFiddle 中找到。
我觉得这是错误的方法,它在各个方面都很糟糕,更重要的是,我不能有两个或更多连续的组!,在我开始堆叠列之后,每当我想停下来时,下一列必须是单独的(而不是另一组)。
我玩过布尔值,这根本不可能,我想不通,我已经将代码简化为最易读的方式并尝试重写其中的一部分,但我一直得到相同的结果。