JS实现table表格内针对某列内容进行即时搜索筛选功能

实现table表格内针对某列内容进行即时搜索筛选功能的攻略包括以下几个步骤:

  1. HTML结构设计

在设计HTML表格结构时,需要为搜索功能留出位置。可以在表格上方添加一个输入框,用户在输入框中输入筛选条件,表格会根据输入内容筛选匹配的数据。

例如:

<div>
  <label for="filter">搜索:</label>
  <input type="text" id="filter" name="filter">
</div>
<table>
  <thead>
    <tr>
      <th>姓名</th>
      <th>年龄</th>
      <th>地址</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>张三</td>
      <td>20</td>
      <td>北京市</td>
    </tr>
    <tr>
      <td>李四</td>
      <td>25</td>
      <td>上海市</td>
    </tr>
    <tr>
      <td>王五</td>
      <td>18</td>
      <td>广州市</td>
    </tr>
  </tbody>
</table>
  1. 获取筛选条件

在JS中,需要获取到输入框中用户输入的筛选条件。可以通过addEventListener()方法监听输入框的keyup事件,每次用户输入完成后都会触发该事件,获取输入框中的值并调用筛选函数。

例如:

var filterInput = document.querySelector('#filter');

filterInput.addEventListener('keyup', function() {
  var filterValue = this.value;
  filterRows(filterValue);
});
  1. 筛选匹配的行数据

在JS中,需要获取到所有表格行元素,并依次遍历判断是否匹配筛选条件,如果匹配则显示该行数据,否则隐藏该行数据。可以通过querySelectorAll()方法获取所有的表格行元素,并使用forEach()方法依次遍历行元素,判断某一列的值是否匹配筛选条件。

例如:

function filterRows(filterValue) {
  var rows = document.querySelectorAll('tbody tr');

  rows.forEach(function(row) {
    var name = row.querySelector('td:nth-child(1)').textContent;
    if (name.indexOf(filterValue) !== -1) {
      row.style.display = 'table-row';
    } else {
      row.style.display = 'none';
    }
  });
}

在这个例子中,我们筛选第一列内容(即姓名),querySelector()方法选择器中使用了:nth-child()伪类,表示选择该行中第一个<td>元素。

  1. 完整代码

完整的JS实现代码如下:

var filterInput = document.querySelector('#filter');

filterInput.addEventListener('keyup', function() {
  var filterValue = this.value;
  filterRows(filterValue);
});

function filterRows(filterValue) {
  var rows = document.querySelectorAll('tbody tr');

  rows.forEach(function(row) {
    var name = row.querySelector('td:nth-child(1)').textContent;
    if (name.indexOf(filterValue) !== -1) {
      row.style.display = 'table-row';
    } else {
      row.style.display = 'none';
    }
  });
}
  1. 示例说明

假设以上HTML和JS代码已经被加载到页面中,在输入框中输入时,表格中只有一行匹配,其他两行数据都被隐藏了。

例如:


姓名 年龄 地址
张三 20 北京市
李四 25 上海市
王五 18 广州市

当输入框中没有任何内容时,所有的表格行都应该显示出来。

例如:


姓名 年龄 地址
张三 20 北京市
李四 25 上海市
王五 18 广州市

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS实现table表格内针对某列内容进行即时搜索筛选功能 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • jQuery 图片查看器插件 Viewer.js用法简单示例

    jQuery 图片查看器插件 Viewer.js用法简单示例 简介 Viewer.js 是一款基于 jQuery 的简单易用图片查看器插件,可以快速实现图片预览和查看,支持常见的文件格式,并且使用方便。 安装 可以直接在官方网站下载 Viewer.js 的压缩包,或者通过其他方式获取插件的源代码。 下载 可以访问 官方网站 下载完整版或者压缩版的 Viewe…

    jquery 2023年5月28日
    00
  • 如何在jQuery UI中销毁一个按钮

    以下是关于如何在 jQuery UI 中销毁一个按钮的完整攻略: 如何在 jQuery UI 中销毁一个按钮 在 jQuery UI 中,可以使用 destroy() 方法来销毁一个按钮。该方法将删除按钮的所有事件处理程序和数据,以及从 DOM 中删除按钮元素。 语法 $(selector).button("destroy"); 其中,s…

    jquery 2023年5月11日
    00
  • jQuery UI accordion Widget()方法

    以下是关于 jQuery UI Accordion Widget() 方法的完整攻略: jQuery UI Accordion Widget() 方法 在 jQuery UI Accordion 中,可以使用 Widget() 方法创建一个新的 Accordion 实例。这将允许您自定义 Accordion 的行为。 语法 $.widget("ui…

    jquery 2023年5月11日
    00
  • 最简单的jQuery程序 入门者学习

    下面是关于“最简单的jQuery程序 入门者学习”的详细攻略: 简介 jQuery是一种流行的JavaScript库,用于简化HTML文档的遍历和操作、事件处理、动画效果和Ajax操作等任务。它可以使开发人员以更少的代码完成更多的任务,并且在不同浏览器和平台之间提供一致的API。 jQuery的引入 在使用jQuery之前,必须先将jQuery库文件引入到页…

    jquery 2023年5月28日
    00
  • jQWidgets jqxTreeGrid pageSizeMode属性

    以下是关于 jQWidgets jqxTreeGrid 组件中 pageSizeMode 属性的详细攻略。 jQWidgets jqxTreeGrid pageSizeMode 属性 jQWidgets jqxTreeGrid 的 pageSizeMode 属性用于设置 TreeGrid 控件分页器的行数模式。可以使用此属性来控制分页器的行数模式。 语法 $…

    jquery 2023年5月12日
    00
  • js form action动态修改方法

    动态修改表单的 Action 属性是在表单提交时将表单的数据使用 HTTP 请求发送到 Action 的 URL 地址,实现前端与后端的数据传输,并将数据处理结果显示给用户。使用 JavaScript 可以动态修改表单的 Action 属性来实现动态提交表单的目的。 步骤如下: 获取表单元素并为其添加绑定事件,当事件触发时执行处理函数。 const form…

    jquery 2023年5月27日
    00
  • 如何在jQuery中在特定秒数后重新加载页面

    在jQuery中,可以使用setTimeout函数实现在特定秒数后重新加载页面。 步骤如下: Step 1:引入jQuery库 在HTML文件<head>标签中引入jQuery库。 <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js&q…

    jquery 2023年5月12日
    00
  • jQWidgets jqxTouch tapHoldDelay属性

    以下是关于 jQWidgets jqxTouch tapHoldDelay 属性的完整攻略: jQWidgets jqxTouch tapHoldDelay 属性 tapHoldDelay 属性用于设置长按事件的触发时间,即用户在屏幕上长按某元素的时间。默认值为 750 毫秒。 语法 $(‘#target’).jqxTouch({ tapHoldDelay:…

    jquery 2023年5月11日
    00
合作推广
合作推广
分享本页
返回顶部