从HTML表中多次搜索

时间:2013-08-13 09:00:01

标签: java javascript html

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

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

1 个答案:

答案 0 :(得分: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()返回一个匹配rowindexes的数组。 并将其传递给下一个电话,直到所有关键字都完成。

最后一个结果将是与所有关键字匹配的rowindex。