如何基于多个选择框筛选表格行?求助解决第二个选择框失效问题
双选择框表格筛选失效修复
你的问题出在searchTable函数里——代码完全没用到第二个选择框的筛选条件,只处理了第一个选择框的值,所以第二个选框自然不会生效。
修改后的searchTable函数逻辑如下:
- 默认让行显示,再根据两个筛选条件逐一校验,不满足则隐藏
- 处理选择框未选择的情况(值为空时跳过对应条件)
- 精准匹配对应列:第一个选框匹配表格第一列(Role Category),第二个匹配第三列(Region)
function searchTable() { var input, filter, inputtwo, filtertwo, table, tr, td, i; input = document.getElementById("myInput"); filter = input.value.toUpperCase(); inputtwo = document.getElementById("myInput2"); filtertwo = inputtwo.value.toUpperCase(); table = document.getElementById("myTable"); tr = table.getElementsByTagName("tr"); for (i = 0; i < tr.length; i++) { // 跳过表头 if (tr[i].id === 'tableHeader') continue; td = tr[i].getElementsByTagName("td"); let shouldShow = true; // 第一个筛选条件:Role Category(第一列) if (filter) { if (td[0].innerHTML.toUpperCase() !== filter) { shouldShow = false; } } // 第二个筛选条件:Region(第三列) if (shouldShow && filtertwo) { if (td[2].innerHTML.toUpperCase() !== filtertwo) { shouldShow = false; } } tr[i].style.display = shouldShow ? "" : "none"; } }
把这段代码替换原页面中的<script>标签内的函数即可。这样两个选择框会同时生效,实现交集筛选——只有同时满足两个选择框条件的行才会显示。如果需要实现"或"逻辑,只需要调整条件判断即可,但根据你的需求,交集筛选更合理。
内容的提问来源于stack exchange,提问作者Phill Jones
相关产品推荐
相关产品推荐

