我在PHP中使用一个包含每行交替数量列的大表。行和列由一系列调用来自MYSQL数据库的“foreach”循环生成和填充。
我对PHP / HTML和MYSQL的结束非常满意。
我正在尝试使用Javascript为此表创建一些“快速过滤器”。
我从w3上的一个例子开始,如下所示
<script>
function myFunction() {
// Declare variables
var input, filter, table, tr, td, i;
input = document.getElementById("myInput");
filter = input.value.toUpperCase();
table = document.getElementById("myTable");
tr = table.getElementsByTagName("tr");
// Loop through all table rows, and hide those who don't match the
search query
for (i = 0; i < tr.length; i++) {
td = tr[i].getElementsByTagName("td")[0];
if (td) {
if (td.innerHTML.toUpperCase().indexOf(filter) > -1) {
tr[i].style.display = "";
} else {
tr[i].style.display = "none";
}
}
}
}
</script>
这与输入标记一起使用,您可以使用用户输入文本进行搜索。我看起来不像示例了,但我真正的问题是
如何在所有列中搜索(实际上是表格的整个文本),这段代码控制搜索哪一列。
td = tr[i].getElementsByTagName("td")[0];
最后的[0]表示它只搜索“第一”列。将0更改为另一个数字将更改为搜索整个表的相应列。
我觉得必须有一种简单的方法将其扩展到多列。我是JS的新手,所以我真的在这里摸索。
我已经尝试了所有我能想到的基本事情,比如改变像:
之类的东西[0,1,2,3,4]// [0-4]// [0][1][2]
这些简单的事情似乎都不是我想要的。它要么选择要搜索的列的最后列出的数字,要么完全打破它!
答案 0 :(得分:3)
你必须嵌套循环! 我不得不使用额外的变量出现来检查一个事件是否在同一行的任何td中。 所以如果没有,可以隐藏行!
new String(“Cricket”)
currentTd [j]正是你要找的! 但是既然你可能不知道连续多少个td,你必须使用for循环!