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

Does Firefox browser not recognize table.cells?

本文关键字:cells table 识别 火狐浏览器      更新时间:2023-09-26

我有以下JavaScript代码。


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

这在IE中效果很好,它返回表格单元格的集合。但是同一行在 Firefox 中返回"未定义"。我正在使用IE 9和Firefox 12。

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

今天在

移植较旧的Internet Explorer应用程序时偶然发现了这个问题。

警告:
container.getElementsByTagName('tagname') 返回 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"的"单次返回"包装到完全相同的尺寸,但上面的gzip更小。PS:我尝试concat - ting table.rows[X].cells,但这不起作用(尽管无论如何我都不会感到安全(

使用示例:

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

希望这对某人有所帮助