Firefox浏览器无法识别table.cells吗?

时间:2012-05-22 11:24:09

标签: javascript firefox cells

我有以下JavaScript代码。


var myCellCollection = document.getElementById('myTbl').cells;

这在IE中运行良好,它返回一组表格单元格。但是同一行在Firefox中返回“undefined”。我使用的是IE 9和Firefox 12。

2 个答案:

答案 0 :(得分:4)

您应该使用document.getElementById("myTbl").getElementsByTagName('td');

答案 1 :(得分:1)

今天在移植旧的Internet Explorer应用程序时偶然发现了这一点。

警告:
container.getElementsByTagName('tagname')返回 ALL container内与查询tagname匹配的元素。

因此table.getElementsByTagName('td')将返回所有td,包括嵌套表的内容!
但是table.cells没有这样做(在实施的地方)。

另外,显然,它与th不匹配。所以这些单元格不在返回集合中,可选地导致如何解决相对于td的顺序的“问题”...

为了简化table.cells的预期功能(在DOM顺序中返回 thtd),我编写了以下简单函数:

function tableCells(t){
   if(t.cells) return t.cells; // use internal routine when supported
   for(var a=[], r=t.rows, y=0, c, x; t=r[y++];){
      for(c=t.cells, x=0; t=c[x++]; a.push(t));
   } 
   return a;
}

或者,使用'if-else'包的'single return'到相同大小的完全,但上面的gzips更小。 PS:我尝试了concat - table.rows[X].cells,但是没有用(虽然我不觉得这样做也不安全)

用法示例:
var identifier = tableCells( /*reference to table (or thead/tbody/tfoot) here*/ );
它将返回一个数组(不是实时集合),如table.cells的结果。

希望这有助于某人