为什么我的表搜索"清除"函数脚本在IE中不起作用



我正在使用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

相关内容

  • 没有找到相关文章

最新更新