从 HTML 表中多次搜索

Multiple search from HTML table

本文关键字:搜索 HTML      更新时间:2023-09-26
function doSearch() {
   var searchText = document.getElementById('searchTerm').value;
   var targetTable = document.getElementById('dataTable');
   var targetTableColCount;
   // Loop through table rows.
   for (var rowIndex = 0; rowIndex < targetTable.rows.length; rowIndex++) {
      var rowData = '';
      // Get column count from header row.
      if (rowIndex == 0) {
         targetTableColCount = targetTable.rows.item(rowIndex).cells.length;
         continue; //do not execute further code for header row.
      }
      // Process data rows. (rowIndex >= 1)
      for (var colIndex = 0; colIndex < targetTableColCount; colIndex++) {
         rowData += targetTable.rows.item(rowIndex).cells.item(colIndex).textContent;
      }
      // If search term is not found in row data then hide the row, else show.
      if (rowData.indexOf(searchText) == -1)
         targetTable.rows.item(rowIndex).style.display = 'none';
      else
         targetTable.rows.item(rowIndex).style.display = 'table-row';
   }
}

这段代码非常适合搜索一个关键字,但我想搜索用分号 (;) 分隔的多个关键字。

首先让你的函数使用参数进行doSearch。而不是:

function doSearch() {
        var searchText = document.getElementById('searchTerm').value;

function doSearch(searchValue, rows) {...} 

然后做

var keywords = document.getElementById('searchTerm').value.split(';');

并循环遍历函数doSearch(keyword[index], rowIndexes);

以包含所有关键字

让函数 doSearch(( 返回一个包含匹配行索引的数组。并将其传递给下一个调用,直到所有关键字完成。

最后一个结果将是匹配所有关键字的行索引。