当前位置:首页 > JavaScript

js实现多个表联动搜索

2026-04-04 22:37:50JavaScript

实现多表联动搜索的JavaScript方案

数据准备与结构设计

定义多个表格的数据结构,确保关联字段一致。例如主表包含idname,子表包含idparentId字段建立关联关系:

const mainTable = [
  { id: 1, name: 'Category A' },
  { id: 2, name: 'Category B' }
];

const subTable = [
  { id: 101, parentId: 1, item: 'Product X' },
  { id: 102, parentId: 1, item: 'Product Y' },
  { id: 103, parentId: 2, item: 'Product Z' }
];

构建搜索函数

创建通用搜索函数处理不同表格的过滤逻辑,通过filter方法实现条件匹配:

js实现多个表联动搜索

function searchTable(data, keyword, fields) {
  return data.filter(item => 
    fields.some(field => 
      String(item[field]).toLowerCase().includes(keyword.toLowerCase())
    )
  );
}

建立联动机制

主表选择变化时触发子表搜索,使用事件监听实现联动:

document.getElementById('main-search').addEventListener('input', (e) => {
  const results = searchTable(mainTable, e.target.value, ['name']);
  renderTable('main-results', results);

  // 联动搜索子表
  const subResults = subTable.filter(item => 
    results.some(mainItem => mainItem.id === item.parentId)
  );
  renderTable('sub-results', subResults);
});

渲染表格数据

动态生成HTML表格显示搜索结果,使用模板字符串构建表格结构:

js实现多个表联动搜索

function renderTable(containerId, data) {
  const container = document.getElementById(containerId);
  container.innerHTML = data.map(item => `
    <tr>
      ${Object.values(item).map(val => `<td>${val}</td>`).join('')}
    </tr>
  `).join('');
}

性能优化建议

对于大数据量场景采用防抖技术,避免频繁触发搜索:

let debounceTimer;
function debouncedSearch() {
  clearTimeout(debounceTimer);
  debounceTimer = setTimeout(() => {
    // 执行搜索逻辑
  }, 300);
}

完整实现示例

整合所有组件形成完整解决方案,包含HTML结构和CSS样式:

<div class="search-container">
  <input type="text" id="main-search" placeholder="Search main table...">
  <table id="main-results"></table>

  <input type="text" id="sub-search" placeholder="Search sub table...">
  <table id="sub-results"></table>
</div>

通过这种设计模式,可以实现任意数量表格的级联搜索功能,只需扩展数据源和关联逻辑即可。

标签: 多个js
分享给朋友:

相关文章

vue实现多行多个表单

vue实现多行多个表单

实现多行多个表单的方法 在Vue中实现多行多个表单通常涉及动态表单生成、数据绑定和表单验证。以下是几种常见的方法: 动态表单数组绑定 使用v-for指令动态生成多行表单,并通过数组管理表单数据。在d…

js实现倒计时

js实现倒计时

实现倒计时的基本方法 使用 JavaScript 实现倒计时功能可以通过 setInterval 或 setTimeout 结合日期计算来完成。以下是几种常见的实现方式: 使用 setInterva…

js实现验证码

js实现验证码

实现验证码的JavaScript方法 生成随机验证码 使用Math.random()生成随机字符串,结合数字和字母: function generateCaptcha() { const cha…

js实现打印

js实现打印

使用window.print()方法实现打印 在JavaScript中,可以通过调用window.print()方法直接触发浏览器的打印功能。这会打开系统的打印对话框,用户可以选择打印机和设置打印选项…

js实现复制到剪贴板

js实现复制到剪贴板

使用document.execCommand方法(传统方式,已废弃但部分浏览器仍支持) 该方法适用于旧版浏览器,但已被标记为废弃。执行前需确保文本已被选中: function copyToClipb…

js实现抽奖

js实现抽奖

实现抽奖功能的基本思路 抽奖功能的核心是随机选择奖项并展示结果。可以通过数组存储奖项,利用随机数生成索引,最后通过动画增强用户体验。 准备奖项数据 定义一个数组存储奖项信息,每个奖项可以包含名称、图…