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';
}
}
此代码非常适合搜索一个关键字,但我希望搜索以分号(;)分隔的多个关键字。
答案 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。