我正在使用javascript使用两种方法搜索html表:类别(选择选项下拉列表)和搜索栏(文本输入)。
我正在使用以下脚本,它在 chrome 中运行良好,但不是 ie:
function _filter(row) {
var input = document.getElementById("searchInput");
var category = row.getElementsByTagName('td')[0].textContent;
var filter = input.value.toUpperCase();
var text = row.textContent.toLowerCase(), val = _input.value.toLowerCase();
row.style.display = text.indexOf(val) === -1 ? 'none' : ((filter === '' || category.includes(filter)) && 'table-row');
}
所以我includes
改为indexOf
如下所示。
function _filter(row) {
var input = document.getElementById("searchInput");
var category = row.getElementsByTagName('td')[0].textContent;
var filter = input.value.toUpperCase();
var text = row.textContent.toLowerCase(), val = _input.value.toLowerCase();
row.style.display = text.indexOf(val) === -1 ? 'none' : ((filter === '' || category.indexOf(filter)) && 'table-row');
这有效,但是当我退格写字母或选择清除时,表将返回整个表的所有行,而忽略当前选择的"类别"。使用包含时不会发生这种情况。它似乎不再考虑getElementsByTagName [0]数组 - 这应该意味着只搜索了第一列(列出了类别),而不是表格的实际内容。 谁能帮忙? 谢谢!
根据@Deepak-MSFT的建议。
把有帮助的评论作为答案。
一件事。
category.indexOf(filter)
应该是category.indexOf(filter) !== -1
.由于
indexOf
可以返回0
这将被视为false
。请参阅"检查发生次数"部分
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/indexOf