我想过滤表中的值,但出现错误

时间:2019-12-06 22:13:06

标签: javascript

无法读取未定义的属性'textContent'

我有那个错误,我现在不明白为什么

我是一个初学者,所以也许这是我不理解的非常简单的事情

function price() {
    var table, tr, td, input;
    table = document.getElementById("myTable");
    tr = table.getElementsByTagName("tr");
    input = document.getElementById("myInput1");
    for (let i = 0; i < tr.length; i++) {
      td = tr[i].getElementsByTagName("td")[2];
      if ( parseInt(td.textContent) > parseInt(input.value)) {
        tr[i].style.display = "";
      } else {
        tr[i].style.display = "none";
      }
    }       
  }

实际上,我想在表中隐藏其值大于用户编写的值的行

这是基本的HTML:

<body>
    <input type="text" class="fa fa-search" id="myInput1" onkeyup="price()" placeholder="Prix max" title="Ecrivez un prix">
            <table id="myTable">
                <tr>
                    <th>Name</th>
                    <th>Country</th>
                    <th>Price</th>
                </tr>
                <template id="listeDestinations">
                      <tr>
                          <td>{{pays}}</td>
                          <td>{{ville}}</td>
                          <td>{{price}}</td>
                        </tr>
                      </template>
            </table>
    <script src="../javascript/accueil.js"></script>
    <script src="../javascript/Destinations.js"></script>
</body>

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

此行 tr = table.getElementsByTagName(“ tr”); 将检索HTML页面中的所有 tr ,并且您有 2 tr 标记

此后,您执行 for循环,并在 for循环中的第一个迭代器中,您将捕获第一个 tr ,然后您将获取此 tr tr [i] .getElementsByTagName(“ td”)[2];

中的所有 td

但是您的第一个 tr 没有任何 td ,它具有 th ,因为该行 td = tr [i ] .getElementsByTagName(“ td”)[2]; 将返回未定义