【发布时间】:2017-08-03 16:23:59
【问题描述】:
我正在处理一个包含多个 Html 大型表格的页面。 为了过滤它们,我找到并修改了这个过滤表格每个单元格的脚本:
<script>
function searchtable() {
var input, filter, table, tr, td, i;
input = document.getElementById("myInput");
filter = input.value.toUpperCase();
table = document.getElementById("myTable");
tr = table.getElementsByTagName("tr");
th = table.getElementsByTagName("th");
for (i = 1; i < tr.length; i++) {
if (!tr[i].classList.contains('header')) {
td = tr[i].getElementsByTagName("td"),
match = false;
for (j = 0; j < td.length; j++) {
if (td[j].innerHTML.toUpperCase().indexOf(filter) > -1) {
match = true;
break;
}
}
if (!match) {
tr[i].style.display = "none";
} else {
tr[i].style.display = "";
}
}
}
}
</script>
这里的问题是代码只在页面的第一个表格中有效,而在其他表格中无效。 我宁愿不要为每个表重复脚本个性化。 您对如何个性化脚本以在多个表中查找有什么建议吗?
编辑: 你知道有什么不同的脚本做同样的事情吗?
【问题讨论】:
-
说实话,这就是我们发明模型的原因。如果您将表中包含的数据包含在对象或数组等内部,则可以使用数组方法对数组进行拟合,然后重新渲染表。但就主题而言,您可以对所有内容进行参数化,因此您的函数接受 'myInput' 和 'myTable' ids:
function searchTable( tableId ) {},然后是每个表都有正确 id 的事件。 -
@Shilly 我会尝试研究数组方法。不幸的是我现在做不到。我非常感谢您的建议(数组方法的使用和 id 的使用)。您还有什么建议吗?
-
您是想学习 javascript 还是需要工作代码?我有一个解决方案,但您将无法再识别其中的代码。
-
@Shilly 实际上现在我需要工作代码,但我总是尝试从我自己(主要是我的错误)和我从社区中找到的帮助中学习。每一个帮助总是被感激的!
标签: javascript html html-table filtering