为什么我的表搜索“清除”功能脚本在IE中不起作用

问题描述 投票:0回答:1

我正在使用javascript通过两种方法搜索html表:类别(选择选项下拉菜单)和搜索栏(文本输入)。

我正在使用以下脚本,它在chrome中运行正常,但不是:

 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]数组-这应该意味着仅搜索第一列(列出类别),而不搜索表的实际内容。有人可以帮忙吗?谢谢!

javascript internet-explorer search
1个回答
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

© www.soinside.com 2019 - 2024. All rights reserved.