js实现表格筛选功能

下面是实现表格筛选功能的完整攻略。

前言

表格是网页中常见的元素之一,而筛选功能则是表格中必不可少的一项功能,可以让用户更方便地查找所需要的数据。本文主要介绍如何使用JavaScript实现表格筛选功能。

实现思路

要实现表格筛选功能,我们可以采用以下步骤:

  1. 获取表格元素和筛选条件输入框元素;
  2. 监听筛选条件输入框的变化;
  3. 根据输入框中的内容筛选表格的行数,并隐藏没有匹配的行。

示例1:基本实现

下面是一个实现表格筛选功能的基本示例代码:

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>表格筛选功能示例</title>
  <style>
    table {
      border-collapse: collapse;
      width: 100%;
    }

    th, td {
      border: 1px solid #ddd;
      padding: 8px;
      text-align: left;
    }

    th {
      background-color: #f2f2f2;
    }
  </style>
</head>
<body>

<h2>表格筛选功能示例</h2>

<p>输入条件筛选表格行:</p>

<input type="text" id="myInput" onkeyup="filterTable()" placeholder="请输入关键字">

<table id="myTable">
  <thead>
    <tr>
      <th>姓名</th>
      <th>年龄</th>
      <th>性别</th>
      <th>居住城市</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>张三</td>
      <td>20</td>
      <td>男</td>
      <td>北京</td>
    </tr>
    <tr>
      <td>李四</td>
      <td>22</td>
      <td>女</td>
      <td>广州</td>
    </tr>
    <tr>
      <td>王五</td>
      <td>25</td>
      <td>男</td>
      <td>上海</td>
    </tr>
    <tr>
      <td>赵六</td>
      <td>30</td>
      <td>女</td>
      <td>深圳</td>
    </tr>
  </tbody>
</table>

<script>
function filterTable() {
  // 获取表格和输入框元素
  var table = document.getElementById("myTable");
  var input = document.getElementById("myInput");
  // 获取输入框的值,并转换成小写字符
  var filter = input.value.toLowerCase();
  // 获取表格中的所有行元素
  var rows = table.getElementsByTagName("tr");

  // 遍历表格中的所有行
  for (var i = 0; i < rows.length; i++) {
    // 获取每一行的所有单元格
    var cells = rows[i].getElementsByTagName("td");
    var rowText = "";

    // 遍历每一行的单元格
    for (var j = 0; j < cells.length; j++) {
      rowText += cells[j].textContent.toLowerCase() + " ";
    }

    // 检查该行是否包含输入框中的文本
    if (rowText.indexOf(filter) > -1) {
      rows[i].style.display = "";
    } else {
      rows[i].style.display = "none";
    }
  }
}
</script>

</body>
</html>

在上面的代码中,我们首先在页面中创建了一个表格,并为其添加了一个<input>元素作为筛选条件输入框。当用户在输入框中输入内容时,我们通过filterTable()函数来自动筛选出符合条件的表格行,并将不符合条件的行设置为隐藏。

filterTable()函数中,我们首先获取了表格和输入框的元素,并利用toLowerCase()方法将输入框中的输入转换成小写字符,这样就可以在比较时忽略大小写了。接着,我们遍历了表格中的所有行,并获取每一行中的所有单元格,将它们的文字内容拼接成一个字符串rowText。然后,我们检查该行是否包含输入框中的文本,如果是,则将该行设置为显示,否则将该行设置为隐藏。

示例2:进阶实现

上面的示例代码中,我们只实现了基本的表格筛选功能。下面,我们可以进一步优化代码,以实现更加强大的表格筛选功能。

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>表格筛选功能示例</title>
  <style>
    table {
      border-collapse: collapse;
      width: 100%;
    }

    th, td {
      border: 1px solid #ddd;
      padding: 8px;
      text-align: left;
    }

    th {
      background-color: #f2f2f2;
    }

    .filter-container {
      margin-bottom: 10px;
    }

    .filter-container input[type="text"] {
      width: 200px;
      height: 30px;
      padding: 5px;
      border: 1px solid #ccc;
      border-radius: 3px;
      font-size: 14px;
    }

    .filter-container select {
      height: 35px;
      padding: 5px;
      font-size: 14px;
      border: 1px solid #ccc;
      border-radius: 3px;
    }
  </style>
</head>
<body>

<h2>表格筛选功能示例</h2>

<div class="filter-container">
  <label for="myInput">关键字:</label>
  <input type="text" id="myInput" placeholder="请输入关键字">
  <label for="mySelect">选择条件:</label>
  <select id="mySelect">
    <option value="">所有条件</option>
    <option value="name">姓名</option>
    <option value="age">年龄</option>
    <option value="gender">性别</option>
    <option value="city">居住城市</option>
  </select>
</div>

<table id="myTable">
  <thead>
    <tr>
      <th>姓名</th>
      <th>年龄</th>
      <th>性别</th>
      <th>居住城市</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>张三</td>
      <td>20</td>
      <td>男</td>
      <td>北京</td>
    </tr>
    <tr>
      <td>李四</td>
      <td>22</td>
      <td>女</td>
      <td>广州</td>
    </tr>
    <tr>
      <td>王五</td>
      <td>25</td>
      <td>男</td>
      <td>上海</td>
    </tr>
    <tr>
      <td>赵六</td>
      <td>30</td>
      <td>女</td>
      <td>深圳</td>
    </tr>
  </tbody>
</table>

<script>
function filterTable() {
  // 获取表格和输入框、选择框元素
  var table = document.getElementById("myTable");
  var input = document.getElementById("myInput");
  var select = document.getElementById("mySelect");
  // 获取输入框和选择框的值,并转换成小写字符
  var filter = input.value.toLowerCase();
  var column = select.value;

  // 获取表格中的所有行元素
  var rows = table.getElementsByTagName("tr");

  // 遍历表格中的所有行
  for (var i = 0; i < rows.length; i++) {
    // 获取每一行的所有单元格
    var cells = rows[i].getElementsByTagName("td");
    var rowText = "";

    // 遍历每一行的单元格
    for (var j = 0; j < cells.length; j++) {
      // 获取当前列的列名
      var columnName = table.rows[0].cells[j].textContent.toLowerCase().trim();
      // 如果是第一行,则将当前列名作为列的名称
      if (i === 0) {
        table.rows[i].cells[j].setAttribute("data-column-name", columnName);
      }
      // 如果当前列的名称和选择框中的值相等,则将该列的值拼接到rowText变量中
      if (column === "" || columnName === column) {
        rowText += cells[j].textContent.toLowerCase() + " ";
      }
    }

    // 检查该行是否包含输入框中的文本
    if (rowText.indexOf(filter) > -1) {
      rows[i].style.display = "";
    } else {
      rows[i].style.display = "none";
    }
  }
}

// 监听输入框和选择框的变化
var input = document.getElementById("myInput");
var select = document.getElementById("mySelect");
input.addEventListener("keyup", filterTable);
select.addEventListener("change", filterTable);
</script>

</body>
</html>

在以上代码中,我们优化了输入框和选择框的样式,并为选择框添加了多个选项,可以让用户可以选择在哪个列上进行筛选。在filterTable()函数中,我们同样获取了表格和输入框、选择框元素,并分别获取了它们的值。在遍历表格的行时,我们先获取了每一行的所有单元格,并获取当前列的列名。如果是第一行,则将当前列名作为列的名称,以便在后续的筛选中进行检查。接着,我们检查当前列的名称和选择框中的值是否相等,如果是,则将该列的值拼接到rowText变量中,最后再看该行是否包含输入框中的文本,进行显示或隐藏的操作。

在这个示例代码中,我们实现了筛选条件的多元化,提高了用户体验,同时也可以通过改变列名称实现中英文切换,为国际化提供了支持。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:js实现表格筛选功能 - Python技术站

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

相关文章

  • jQWidgets jqxGrid horizontalscrollbarstep属性

    jQWidgets jqxGrid horizontalscrollbarstep 属性详解 jQWidgets jqxGrid 是一种表格控件,用于在 Web 应用程序中创建表格。horizontalscrollbarstep 属性是 jqxGrid 控件的一个属性,用于设置水平滚动条的步长。本文将详细讲解 horizontalscrollbarstep …

    jquery 2023年5月10日
    00
  • EasyUI jQuery分页小工具

    下面我来详细讲解一下“EasyUI jQuery分页小工具”的完整攻略。 1. 什么是EasyUI jQuery分页小工具 EasyUI jQuery分页小工具是一款基于jQuery和EasyUI的分页插件,可以让你轻松地实现分页功能,支持自定义分页条式样、跳转等功能。 2. 如何使用EasyUI jQuery分页小工具 2.1 引入EasyUI jQuer…

    jquery 2023年5月13日
    00
  • jQuery Mobile Selectable option()方法

    jQuery Mobile Selectable option()方法详解 jQuery Mobile Selectable是一个可选择的插件,它允许用户通过单击或拖动来选择元素。option()方法是其中一个方法,它可以用设置或获取可选择选项。在本文中,我们将详细介绍jQuery Mobile Selectable option()方法用法和示例。 opt…

    jquery 2023年5月11日
    00
  • jQWidgets jqxRangeSelector disabled属性

    以下是关于 jQWidgets jqxRangeSelector 组件中 disabled 属性的详细攻略。 jQWidgets jqxRangeSelector disabled 属性 jQWidgets jqRangeSelector 组件的 disabled 属性用于禁用或启用选择器。 语法 // 禁用选择器 $(‘#rangeSelector’).j…

    jquery 2023年5月12日
    00
  • Eclipse下jQuery文件报错出现错误提示红叉

    首先,我们需要确定一下你所遇到的错误提示具体是什么,因为“错误提示红叉”并不具体。如果你遇到的是类似于“Syntax error, unrecognized expression”这样的错误提示,那么通常是因为jQuery版本过低或者没有引入jQuery库导致的。 解决这个问题的最常见方法是: 确认是否已经引入了jQuery库文件,如果没有,需要在HTML页…

    jquery 2023年5月27日
    00
  • 如何使用jQuery获得当前HTML页面的标题

    获取当前HTML页面的标题可以使用jQuery的document.title属性。该属性返回当前页面的标题。 下面我们来看一些示例: 示例1:输出页面标题 通过jQuery选择器选择<title>元素,然后使用text()方法获取标题文本并输出。 $(document).ready(function(){ var title = $(‘title…

    jquery 2023年5月12日
    00
  • jQWidgets jqxBarcode labelColor属性

    jQWidgets是一个基于jQuery的UI组件库,提供了丰富的UI件和工具,包括表格、图表、表单、历、菜等。其中,jqxBarcode是jQWidgets中的一个码组件,可以用于生成各种类型的条码。jqxBarcode提供了labelColor属性,用于设置条形码标签颜色。本文将详细介绍jqxBarcode的labelColor属性的使用方法和示例。 l…

    jquery 2023年5月9日
    00
  • vue实现选中效果

    下面是关于“vue实现选中效果”的完整攻略。 1. 实现思路 Vue实现选中效果的思路主要是通过为指定元素绑定一个属性或者类名,然后通过样式控制实现选中效果。一般情况下,选中状态和未选中状态分别对应不同的样式。 2. 实现步骤 以下是通过Vue实现选中效果的步骤: 2.1 在Vue中定义一个数据变量,用于保存当前选中的元素对应的索引值: <templa…

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