You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修复表格Type下拉筛选功能失效的问题?

修复表格Type筛选器的列显示问题

你的Type筛选器未生效的核心原因是逻辑方向错误:原代码通过判断行是否包含对应Type的单元格来控制行的显示/隐藏,但你的需求是控制列的显示/隐藏(仅展示选中的Type列+Year列)。以下是修复方案:

修复步骤

1. 调整筛选逻辑核心

保留原有的年份行筛选逻辑,新增列筛选逻辑:

  • 始终保留Year列显示
  • 根据Type筛选器的选中值,控制ASB/ASB 2列的显示状态

2. 替换JavaScript代码

将原script.js的内容替换为以下代码:

const yearSelect = document.getElementById('year-select');
const typeSelect = document.getElementById('type-select');
const tableRows = document.querySelectorAll('tbody tr');
const headerCells = document.querySelectorAll('thead th');

function filterTable() {
  // 处理年份筛选:控制行的显示/隐藏
  tableRows.forEach((row) => {
    const yearCell = row.querySelector('td[data-heading="Year"]');
    const yearFilter = yearSelect.value === 'all' || yearSelect.value === yearCell.textContent;
    row.style.display = yearFilter ? '' : 'none';
  });

  // 处理Type筛选:控制列的显示/隐藏
  const selectedType = typeSelect.value;
  headerCells.forEach((th, index) => {
    const thText = th.textContent.trim();
    // Year列始终显示
    if (thText === 'Year') {
      th.style.display = '';
      tableRows.forEach(row => row.querySelectorAll('td')[index].style.display = '');
      return;
    }
    // 控制ASB系列列的显示
    if (selectedType === 'all' || thText === selectedType) {
      th.style.display = '';
      tableRows.forEach(row => row.querySelectorAll('td')[index].style.display = '');
    } else {
      th.style.display = 'none';
      tableRows.forEach(row => row.querySelectorAll('td')[index].style.display = 'none');
    }
  });
}

yearSelect.addEventListener('change', filterTable);
typeSelect.addEventListener('change', filterTable);

filterTable();

效果验证

  • 当Year选「All」、Type选「ASB」时,仅显示Year和ASB列
  • 当Type选「ASB 2」时,仅显示Year和ASB 2列
  • 当Type选「All」时,显示所有列,同时年份筛选功能正常

内容的提问来源于stack exchange,提问作者user1134456

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 09:37:43