更改w3示例表格过滤器以搜索多个列

时间:2017-06-30 18:05:11

标签: javascript php html filter html-table

我在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] 

这些简单的事情似乎都不是我想要的。它要么选择要搜索的列的最后列出的数字,要么完全打破它!

1 个答案:

答案 0 :(得分:3)

你必须嵌套循环! 我不得不使用额外的变量出现来检查一个事件是否在同一行的任何td中。 所以如果没有,可以隐藏行!

new String(“Cricket”)

currentTd [j]正是你要找的! 但是既然你可能不知道连续多少个td,你必须使用for循环!