使用JavaScript过滤/搜索表

时间:2017-02-23 08:49:29

标签: javascript search filter

首先,我不是JavaScript方面的专家,所以答案可能很简单,但目前我正在使用这个(https://www.w3schools.com/howto/howto_js_filter_table.asp)教程来过滤表格,但你只能搜索在1列中,所以在此示例中仅用于名称或国家/地区,但我想同时在两个列中进行搜索。

我需要在此代码中更改哪些内容?

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";
      }
    } 
  }
}

1 个答案:

答案 0 :(得分:0)

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]; // This code only get the frist "TD" element
        tds = tr[i].getElementsByTagName("td");
        for (j = 0; j < td.length; j++) {
            td = tds[j];
            if (td) {
                if (td.innerHTML.toUpperCase().indexOf(filter) > -1) {
                    tr[i].style.display = "";
                } else {
                    tr[i].style.display = "none";
                }
            }
        }

    }
}

}