我正在尝试使用getElementsByTagName方法在javascript中访问表格单元格,如下所示。最后,我想将数组中的每个单元格与另一个值进行比较,并能够根据比较更改该单元格的背景颜色。
var cells = document.getElementById("myTable").getElementsByTagName("tr");
for (i = 0; i < cells.length; i++)
{
cells[i] = cells[i].getElementsByTagName("td");
}
但是,如果我尝试访问单元格[0] [0],则返回undefined。我觉得我不完全理解getElementsByTagName正在做...这个方法有什么希望吗?有效率吗?
答案 0 :(得分:1)
使用jquery它很简单:
var contentArray = new Array();
$('tr').each(function(indexParent) {
contentArray['row'+indexParent] = new Array();
$(this).children().each(function(indexChild) {
contentArray['row'+indexParent]['col'+indexChild] = $(this).html();
});
});
答案 1 :(得分:1)
您可以使用表格元素的.rows
属性和tr元素的.cells
属性直接访问任何单元格:
var myCell = myTable.rows[y].cells[x];
无需构建自己的阵列。
所以不要使用.getElementsByTagName()
,它返回一维数组。 (嗯,实际上是NodeList,但只要你记得它是 live 就可以像数组一样使用它。)
如果您确实要遍历所有单元格以将其与其他值进行比较,请使用.rows
和.cells
从左到右,从上到下进行比较:
var rows = document.getElementById("myTable").rows;
for (var y=0; y < rows.length; y++) {
for (var x=0; x < rows[y].length; x++) {
var cellAtXY = rows[y].cells[x];
cellAtXY.someProperty = something; // your code here
}
}
答案 2 :(得分:0)
你需要为每一行做这样的事情。
var row = table.getElementsByTagName('tr')[rowIndex];
var cells = row.getElementsByTagName('td');
然后根据这些变量的内容构建数组。
答案 3 :(得分:0)
使用此选项将表格单元格设为2D数组
var tableRows = (document.getElementById("myTable")).getElementsByTagName("tr");
var cells = [];
for(var i = 0; i < tableRows.length; i++) {
cells.push(tableRows[i].getElementsByTagName("td"));
}
现在你可以使用
获取桌面上的任何单元格cells[0][0]