javascript - 如何根据行单元格值隐藏/显示表格列?

标签 javascript jquery css html-table

我有这张表:

<table class="mytbl">
 <thead>
  <tr>
    <th>dyn-tbl-hdr-1</th>  <----these actually are timestamps.
    <th>dyn-tbl-hdr-2</th>
    <th>dyn-tbl-hdr-3</th>
    <th>dyn-tbl-hdr-4</th>
    <th>dyn-tbl-hdr-5</th>
    <th>dyn-tbl-hdr-6</th>
  </tr>
 </thead>
 <tbody>
  <tr>
   <td>20</td>
   <td>50</td>
   <td>60</td>
   <td>20</td>
   <td>50</td>
   <td>60</td>
  </tr>
  <tr>
   <td>33</td>
   <td>5455</td>
   <td>4550</td>
   <td>245</td>
   <td>50566</td>
   <td>5678</td>
  </tr>
  <tr>
   <td>33433</td>
   <td>598455</td>
   <td>894550</td>
   <td>96245</td>
   <td>7050566</td>
   <td>4325678</td>
  </tr>
 </tbody>
</table>

我只想显示第一行值为 20(或 20 和 60)的那些“列”。我想根据任何行的单元格值显示/隐藏列。目标是仅显示给定行中的单元格值匹配的那些列。 (所以在上面的例子中只显示第 1 行包含 20 的那些列(如果用户想看到 20)。我可以只显示 ro1 包含 20 和 50 的那些列吗?我想我需要先选择一行,然后单元格值,然后根据该行和选定的单元格值隐藏列。但我不确定如何在 jquery 中对此进行编码。感谢所有帮助。

在我的应用程序中,表是动态生成的。表头不是常量,它们实际上是时间戳。

最佳答案

试试这个:

var col = new Array();
$('tr').eq('1').find('td').each(function() {
    if ($(this).text() == 20 || $(this).text() == 50) {
        col.push($(this).index());
    }

});
$('th,td').each(function() {
    if ($.inArray($(this).index(), col)==-1) $(this).hide();
});​

jsFiddle example

这会在表格的第一个非标题行中搜索 20 或 50 的值,并隐藏没有这些值的列。

关于javascript - 如何根据行单元格值隐藏/显示表格列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11507705/

相关文章:

javascript - 为什么我的 useEffect React 函数在页面加载时运行,尽管我给了它第二个值数组

javascript - 单击复选框时检查复选框的选中状态

javascript - Fullpage.js。添加滚动延迟

html - css - 最大高度 : 100% doesn't work on textarea

css - IE9 Canvas 缩放问题。不会保持宽高比以适合容器

javascript - For循环转换一系列变量

JavaScript 重定向 : script in symfony route not working

css - IE Alpha Png 修复不起作用

javascript - 在 javascript 中从 API 获取电影数据

java - PhoneGap应用程序中的iOS隐私设置