我目前正在忙于一个带有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
。