javascript - Laravel-Html 表过滤器(排序依据)

标签 javascript jquery html filter

如果我单击“已验证”,它会隐藏所有状态为“未验证”的字段。但这不起作用。 有什么建议吗?

这是Html表格代码



    <div class="col-sm-8">
        <div class="filter-group">
        <label>Status</label>

        <select style="width:150px;" id="mylist" onchange="myFunction2()" class="form-control">
        <option>Validated</option>
        <option>Not Validated</option>

        </select>
        </div>
        <span class="filter-icon"><i class="fa fa-filter"></i></span>
        </div>
        </div>




这是 JavaScript


                <script>
            function myFunction2() {
                var input, filter, table, tr, td, i;
                input = document.getElementById("mylist");
                filter = input.value.toUpperCase();
                table = document.getElementById("myTable");
                tr = table.getElementsByTagName("tr");
                for (i = 0; i < tr.length; i++) {
                    td = tr[i].getElementsByTagName("td")[5];
                    if (td) {
                        if (td.innerHTML.toUpperCase().indexOf(filter) > -1) {
                            tr[i].style.display = "";
                        } else {
                            tr[i].style.display = "none";
                        }
                    }
                }
            }
        </script>

这是表格图片

enter image description here

最佳答案

查看下面的这段代码,最有可能的猜测是 td 索引不匹配可能导致它。计算您的 td 指数。最好是 console.log(td) 以确保

function myFunction2() {
  var input, filter, table, tr, td, i;
  input = document.getElementById("mylist");
  filter = input.value.toUpperCase();
  table = document.getElementById("myTable");
  tr = table.getElementsByTagName("tr");
  for (i = 0; i < tr.length; i++) {
    td = tr[i].getElementsByTagName("td")[1];
    // console.log(i, td); // add this to find out what you are comparing with
    if (td) {
      if (td.innerHTML.toUpperCase().indexOf(filter) ===0) {
        tr[i].style.display = "";
      } else {
        tr[i].style.display = "none";
      }
    }
  }
}
<div class="col-sm-8">
  <div class="filter-group">
    <label>Status</label>

    <select style="width:150px;" id="mylist" onchange="myFunction2()" class="form-control">
      <option>Validated</option>
      <option>Not Validated</option>
      
      

    </select>
  </div>
  <span class="filter-icon"><i class="fa fa-filter"></i></span>
</div>

<table id="myTable">
  <tr><td>1</td><td>Validated</td></tr>
  <tr><td>2</td><td>Not Validated</td></tr>
  <tr><td>3</td><td>Validated</td></tr>
  <tr><td>4</td><td>NotValidated</td></tr>
  <tr><td>5</td><td>Not Validated</td></tr>
</table>

关于javascript - Laravel-Html 表过滤器(排序依据),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58143140/

相关文章:

javascript - 访问 Promise 链中的外部变量

javascript - 在页面加载时使用 async/defer 加载多个 Jquery 文件

javascript - 使用 href ="#id"时添加 padding-top 滚动

javascript - Webkit css div 阴影 : is it possible to put it onto div with pure css or images are needed?

jquery - 二级菜单下拉样式

javascript - 基于 React 输入字段的禁用按钮无法正常工作

Javascript each() 函数删除链接

javascript - Html 元素允许 Ctrl+A 组合其中的文本

javascript - PHP 不返回 Ajax 调用

javascript - 如何在单击按钮时获取div的坐标