当前位置: 首页 > 知识库问答 >
问题:

html高效可伸缩表列

胡鸿志
2023-03-14

我正在尝试创建一个带有可伸缩列的动态html表。在实际情况下,我可以有20列每个标题和最多400个值。我想这样呈现数据:

-----------------------------------------------------------
|    |            Header 1          | Header 2 | Header 3 |
-----------------------------------------------------------
|val1| col1.1 | col1.2 |...| col1.x | col 2.1  | col 3.1  |
-----------------------------------------------------------
|val2| col1.1 | col1.2 |...| col1.x | col 2.1  | col 3.1  |
-----------------------------------------------------------
 ...
-----------------------------------------------------------
|valx| col1.1 | col1.2 |...| col1.x | col 2.1  | col 3.1  |
-----------------------------------------------------------
|foot| foot1.1| foot1.2|...| foot1.x| foot2.1  | foot3.1  |
-----------------------------------------------------------

我希望能够点击和colx.1,展开或显示同一标题下的所有列,折叠(或隐藏)其他标题的其他列。在上表中单击任何COL2.1单元格,然后将该表更改为:

-----------------------------------------------------------
|    | Header 1 |            Header 2          | Header 3 |
-----------------------------------------------------------
|val1| col 1.1  | col2.1 | col2.2 |...| col2.x | col 3.1  |
-----------------------------------------------------------
|val2| col 1.1  | col2.1 | col2.2 |...| col2.x | col 3.1  |
-----------------------------------------------------------
 ...
-----------------------------------------------------------
|valx| col 1.1  | col2.1 | col2.2 |...| col2.x | col 3.1  |
-----------------------------------------------------------
|foot| foot1.1  | foot2.1| foot2.2|...| foot2.x| foot3.1  |
-----------------------------------------------------------

我试着做了这样的事情:在所有可以显示/隐藏的td元素上使用hideable类,并且做了这样的事情:

var rows = $('tr');
rows.find('th:eq(1), td:eq(1)').on('click', function() {
    $('.hideable').toggle()
});

我还需要相应地更改页眉和页脚的colspan

('th#foot1.1').attr('colspan',1)

上面的解决方案起作用,但效率很低,看起来也不是很干净。

添加了简化的jsFiddle示例jsfidle.net/yrmsx。这样做的目的是不要同时展开标题1和标题2。

有没有更好、更有效的方法来实现这一点?

共有1个答案

吴哲
2023-03-14

好吧,我做了这把小提琴,希望就是你要找的。

基本上你应该专注于这一点:

  • 赋予头及其子列相同的类
  • 为要切换的头设置colspan属性
  • 为每个标头设置data-fullcol属性,以跟踪它们的最大colspan
  • 仅将那些具有colspan属性的列绑定到click event
  • 对要保持可见的列进行第一类排序
  • 在click事件上隐藏其类不等于所单击标头的类且也没有第一类的所有列
  • 将所有其他标头colspan设置为1
  • 切换与您单击的标题具有相同类的所有列
  • 要切换标头的colspan,请将colspan设置为(data-fullcol-colspan+1)

注意:这只适用于头文件只有一个类的情况,如果你想给它们一个以上的类,考虑把“重要的类”保存在一个特定的属性中,比如data-class

 类似资料:
  • 将近200个nio线程处于相同的状态。可以做什么来使它的代码更可伸缩性,这样我们将获得更高的吞吐量。

  • 我有500MB的数据要推送到云搜索。 以下是我尝试过的选项: 直接从控制台上传: 试图上传文件时,有5 MB的限制。 然后将文件上传到S3并选择S3选项, 上传到S3并在控制台中给出S3 url: 失败并要求尝试命令行。 尝试使用命令行 aws cloudsearchdomain上载文档--endpointurlhttp://endpoint--内容类型application/json--文档s3

  • 点击按钮后,视图伸长或缩短。实现比较简单,利用动画block实现。 [Code4App.com]

  • 伸缩是对该应用所启动的pods数量进行一个控制。 同样进入应用的详情页页,在右上角找到“伸缩”按钮并点开。 在弹出来的对话框中选择启动的POD数量,如下图: 提交之后若数量大于之前的数量,则会启动缺少的POD数量,若小于之前的值,将会逐步减少应用的POD。 目前给的最大值是8个pod,资源可使用的内存是16G,若您的应用超过我们所设定的最大值。想办法优化吧,64核128G内存都不够用,这种级别的应

  • 我正在尝试设置2个支持HA和故障转移的ActiveMQ Artemis服务器。但是在文档和本例中,我可以看到Artemis是不可伸缩的,因为我必须在代码中设置到每个Artemis节点的连接和会话。这意味着,如果我想通过添加第三个服务器来扩展Artemis,那么我必须发布一个新的代码,其中存在与该服务器的连接和会话,对吗?

  • 在我工作的公司,我们计划更新和重新编码我们12年的在线销售网络应用程序。 我们的客流量有点高;每天超过10万个销售订单意味着在web应用程序上每天至少有100万个交互。 我想用NodeJS作为web服务器,集成到我们的ERP系统中,运行在Oracle Exadata数据库上。 我的问题是:性能对我们来说是非常非常关键的,我不确定NodeJS的可伸缩性是否足以应付如此高的事务数。 我在网上读了一些博