0
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';
   }
}

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

4

1 回答 1

1

首先使用参数使您的函数 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() 返回一个包含匹配行索引的数组。并将其传递给下一次调用,直到所有关键字完成。

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

于 2013-08-13T09:23:07.207 回答