我目前正在忙于一个带有html表的项目,其中包含游戏和发布年份。我正在尝试创建一个按钮,单击该按钮将隐藏2016年未启动的任何行。

因此,我在此过程中的想法是,我将创建一个forloop来遍历每一行和每一列以查找年份值,如果是2016年,则将其保留,否则,将其隐藏。

但是我在循环部分有问题。

<script>
    function GameSearchLoop() {
        var table = document.getElementsByClassName(table);

        if (table == null) {
            console.log("Table Not Found");
        }
        else {
            console.log("Table Found");
        }

        var rowLength = table.rows.length;
        for (var z = 0; z < rowLength; z++) {
            var cells = table.rows.item(z).cells;
            var cellLength = cells.length;
            console.log("Row Checked");
            for (var x = 0; x < cellLength; x++) {
                console.log("Column Checked");
            }
        }

        //for (var r = 0, n = table.rows.length; r < n; r++) {
        //    console.log("Row Checked");
        //    for (var c = 0, m = table.rows[r].cells.length; c < m; c++) {
        //        alert(table.rows[r].cells[c].innerHTML);
        //        console.log("Column Checked");
        //    }
        //}


    }
</script>


我在这里有两个不同的for循环,它们似乎都不起作用。
该表是使用与该表相连的相同脚本略微创建的。

当运行代码并单击按钮时,我确实在控制台中看到“找到表”,但此后我得到“无法读取GameSearchLoop上未定义的属性'length'的信息”。

谢谢

最佳答案

getElementsByClassName返回一个NodeList,一个集合。您需要这些元素中的第一个:

var table = document.getElementsByClassName(table)[0];


假设table在第一个实例中是一个包含类名的变量,并且您的表是其中第一个或唯一一个。

或者,

var rowLength = table[0].rows.length;




更好的是,给表一个ID并使用getElementById

09-25 19:55
查看更多