javascript中的未知if语句

时间:2018-04-10 15:27:51

标签: javascript html if-statement filtering

if(td)条件在这做什么?编写此代码以搜索表中的行。 var input是搜索框,var table是表格。

function myFunction() {
    // this function filters the table using search box
    var input, filter, table, tr, td, i;

    input = document.getElementById("myInput"); // the search box
    filter = input.value.toUpperCase();
    table = document.getElementById("myTable"); // the table
    tr = table.getElementsByTagName("tr");      // the row of table

    for (i = 0; i < tr.length; i++) {
        td = tr[i].getElementsByTagName("td")[0];
        if (td) {  // why do we need this condition here?
            if (td.innerHTML.toUpperCase().indexOf(filter) > -1) {
                tr[i].style.display = "";
            } else {
                tr[i].style.display = "none";
            }
        }       
    }
}

3 个答案:

答案 0 :(得分:2)

代码if (td)检查以确保td中有某些内容并且它是真实的,以便下一行在查找td.innerHTML时不会抛出错误。

答案 1 :(得分:2)

td包含该行的数据,您将数据与某些过滤器进行匹配。现在,如果td不存在,您将收到错误undefined

答案 2 :(得分:1)

docs

Element.getElementsByTagName()方法返回具有给定标记名称的元素的实时HTMLCollection。

结果是找到元素的实时HTMLCollection,它们出现在子树中。如果没有找到任何元素,(在您的情况下,如果内部没有<tr>的{​​{1}}),则HTMLCollection为空。

如果现在你得到一个空的HTMLCollection,那么你调用下一行的innerHTML方法将导致以下错误,你的代码将会中断。

  

“TypeError:td未定义”